mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-06 19:32:49 +00:00
Compare commits
198 Commits
2025-07-03
...
2025-07-11
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee5cd20915 | ||
|
|
5dcd39231f | ||
|
|
8f79823c95 | ||
|
|
ba00a1d3f0 | ||
|
|
599d65768e | ||
|
|
471e2f758f | ||
|
|
f3a4bd461d | ||
|
|
b115fe9120 | ||
|
|
f9429ecf5a | ||
|
|
ebea43f299 | ||
|
|
d693c9361b | ||
|
|
3ca53067a7 | ||
|
|
93e204850b | ||
|
|
8595d48cec | ||
|
|
6fcca2bfdb | ||
|
|
295b419fbc | ||
|
|
b9ac02e74f | ||
|
|
66d2f96b16 | ||
|
|
1a66ca2683 | ||
|
|
b865be5e45 | ||
|
|
edb8ee5980 | ||
|
|
d30c0718da | ||
|
|
90b6712453 | ||
|
|
3140438b2f | ||
|
|
bb00b9f545 | ||
|
|
12b9e163bc | ||
|
|
ee182fe867 | ||
|
|
5c6573152d | ||
|
|
1c05a843bb | ||
|
|
ce5b17e210 | ||
|
|
787d749340 | ||
|
|
cd98fddc05 | ||
|
|
043ca11732 | ||
|
|
d596ced793 | ||
|
|
4f08b4609b | ||
|
|
2e4c185ee1 | ||
|
|
64fac95a03 | ||
|
|
786c9178f9 | ||
|
|
7b380253ee | ||
|
|
3914c0f7b9 | ||
|
|
1a53b749da | ||
|
|
f01046133e | ||
|
|
e8aa450d06 | ||
|
|
6acf854f3e | ||
|
|
b565048985 | ||
|
|
24eff9dbbd | ||
|
|
24be3b43b1 | ||
|
|
54d534a5d2 | ||
|
|
5bad80e148 | ||
|
|
89498f4205 | ||
|
|
661a58ae29 | ||
|
|
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 | ||
|
|
3b7036ae58 | ||
|
|
4412b39d21 | ||
|
|
0faf06f4e2 | ||
|
|
0b300fb9ab | ||
|
|
08b89eb285 | ||
|
|
9cbcf4435a | ||
|
|
e4252a58ee | ||
|
|
08eb914e3c | ||
|
|
000b7d4a85 | ||
|
|
bb33002c2a | ||
|
|
7bafa864d0 | ||
|
|
396e0c6523 | ||
|
|
1530e52108 | ||
|
|
451f6aff8e | ||
|
|
046acc75db | ||
|
|
f40218aa07 | ||
|
|
c5e831dadc | ||
|
|
16786a8304 | ||
|
|
fc728bcca7 | ||
|
|
5516aa493d | ||
|
|
54f2f98193 | ||
|
|
137a41f67c | ||
|
|
26365561dc | ||
|
|
9dc0fc80b9 | ||
|
|
722f7e14d7 | ||
|
|
b2a8a9bd00 | ||
|
|
12bd6754ab | ||
|
|
74166f97f9 | ||
|
|
b2bccd9501 | ||
|
|
c567b75aa7 | ||
|
|
2d77790b64 | ||
|
|
37d466103d | ||
|
|
d59aa0527a | ||
|
|
9ddf10f82e | ||
|
|
69d2835c73 | ||
|
|
59f99a27d2 | ||
|
|
372b52f64d | ||
|
|
2586c9f385 | ||
|
|
5c5d5d52ce | ||
|
|
c2a7e990bd | ||
|
|
3847442ca5 | ||
|
|
6996111473 | ||
|
|
3336f6a6f5 | ||
|
|
be6a63cd03 | ||
|
|
160846e98b | ||
|
|
e63128625e | ||
|
|
e58ad9237a | ||
|
|
2ce64b5004 | ||
|
|
9893379eef | ||
|
|
9ae95d1eb5 | ||
|
|
8a178b6f45 | ||
|
|
f0b645c894 | ||
|
|
2be5d83a6d | ||
|
|
fafb7501c5 | ||
|
|
4bac3063da | ||
|
|
29d3015314 | ||
|
|
4d2fcb2c66 | ||
|
|
ca6b1a95dd | ||
|
|
14cb9f097d | ||
|
|
4d4726ccbe | ||
|
|
3ce5893fe3 | ||
|
|
993b01fa83 | ||
|
|
5c4abb6d1d | ||
|
|
06ec9593da | ||
|
|
ace106051b | ||
|
|
e2396f6667 | ||
|
|
067b3c2f02 | ||
|
|
73f1c261ab | ||
|
|
2cbf0f744f | ||
|
|
a6517f4d7e | ||
|
|
e492a9b5d9 | ||
|
|
5e7eb4ae3a | ||
|
|
1a8a34b533 | ||
|
|
c38b4c2ef3 | ||
|
|
679699e6af | ||
|
|
32a724ac8a | ||
|
|
798a7b323e | ||
|
|
f1eda9a270 | ||
|
|
5eaee5054f | ||
|
|
e140631760 | ||
|
|
ae24b56c61 | ||
|
|
cb7d58b9b0 | ||
|
|
115b21f729 | ||
|
|
9072459066 | ||
|
|
c2f9737435 | ||
|
|
e5bea1f49a | ||
|
|
f7e9fbc473 | ||
|
|
66a5730288 | ||
|
|
1cefb1b842 | ||
|
|
16ac51b551 | ||
|
|
28ed2da95f | ||
|
|
0c98308b60 | ||
|
|
9128b9dd12 | ||
|
|
301a23e5f4 | ||
|
|
2b848ff1d8 | ||
|
|
3d69931675 | ||
|
|
3e504cf48f | ||
|
|
d2cbfcd69a | ||
|
|
ebfb6a4e34 | ||
|
|
7403470bd7 | ||
|
|
af9475d280 | ||
|
|
8882a17b6f | ||
|
|
32d6194ade | ||
|
|
569089cb73 | ||
|
|
f494e68016 | ||
|
|
7561e26c0a | ||
|
|
a95be13c95 | ||
|
|
9ab50d4248 | ||
|
|
f5be1d270a | ||
|
|
524a2a422d | ||
|
|
45fbc30cc5 | ||
|
|
f8c1d7bde8 | ||
|
|
9b8657fbb3 | ||
|
|
f68f19aa3d | ||
|
|
85758f8b91 | ||
|
|
e981c42517 | ||
|
|
7d6ac73153 | ||
|
|
aad2dd6232 | ||
|
|
cb24880115 | ||
|
|
0e87c4fe34 | ||
|
|
438eddbde1 | ||
|
|
729895e2ed |
42
.github/autolabeler-config.json
generated
vendored
42
.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,22 +101,29 @@
|
|||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"high risk": [
|
"addon": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"misc/build.func",
|
"tools/addon/**"
|
||||||
"misc/install.func",
|
|
||||||
"misc/create_lxc.sh"
|
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"documentation": [
|
"pve-tool": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"*.md"
|
"tools/pve/**"
|
||||||
|
],
|
||||||
|
"excludeGlobs": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vm": [
|
||||||
|
{
|
||||||
|
"fileStatus": null,
|
||||||
|
"includeGlobs": [
|
||||||
|
"vm/**"
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
|
|||||||
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"]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
49
.github/workflows/autolabeler.yml
generated
vendored
49
.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();
|
||||||
|
|
||||||
@@ -44,50 +45,66 @@ jobs:
|
|||||||
});
|
});
|
||||||
const prFiles = prListFilesResponse.data;
|
const prFiles = prListFilesResponse.data;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Apply labels based on file changes
|
|
||||||
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
||||||
const shouldAddLabel = prFiles.some((prFile) => {
|
const shouldAddLabel = prFiles.some((prFile) => {
|
||||||
return rules.some((rule) => {
|
return rules.some((rule) => {
|
||||||
const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true;
|
const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true;
|
||||||
const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
||||||
const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
||||||
|
|
||||||
return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch;
|
return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
if (shouldAddLabel) {
|
if (shouldAddLabel) {
|
||||||
labelsToAdd.add(label);
|
labelsToAdd.add(label);
|
||||||
|
if (label === "update script") {
|
||||||
|
for (const prFile of prFiles) {
|
||||||
|
const filename = prFile.filename;
|
||||||
|
if (filename.startsWith("vm/")) labelsToAdd.add("vm");
|
||||||
|
if (filename.startsWith("tools/addon/")) labelsToAdd.add("addon");
|
||||||
|
if (filename.startsWith("tools/pve/")) labelsToAdd.add("pve-tool");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if two labels or more are added, return
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (labelsToAdd.size < 2) {
|
if (labelsToAdd.size < 2) {
|
||||||
const templateLabelMappings = {
|
const templateLabelMappings = {
|
||||||
"🐞 **Bug fix**": "bugfix",
|
"🐞 **Bug fix**": "bugfix",
|
||||||
"✨ **New feature**": "feature",
|
"✨ **New feature**": "feature",
|
||||||
"💥 **Breaking change**": "breaking change",
|
"💥 **Breaking change**": "breaking change",
|
||||||
|
"🆕 **New script**": "new script",
|
||||||
|
"🌍 **Website update**": "website", // handled special
|
||||||
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
||||||
|
"📝 **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");
|
||||||
const match = prBody.match(regex);
|
|
||||||
if (match) {
|
if (regex.test(prBody)) {
|
||||||
console.log(`Match: ${match}`);
|
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);
|
labelsToAdd.add(label);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (labelsToAdd.size === 0) {
|
||||||
|
labelsToAdd.add("needs triage");
|
||||||
console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
|
}
|
||||||
|
|
||||||
if (labelsToAdd.size > 0) {
|
if (labelsToAdd.size > 0) {
|
||||||
console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`);
|
|
||||||
await github.rest.issues.addLabels({
|
await github.rest.issues.addLabels({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
|
|||||||
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") ? [
|
||||||
|
|||||||
181
CHANGELOG.md
181
CHANGELOG.md
@@ -10,12 +10,189 @@
|
|||||||
> [!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.
|
||||||
|
|
||||||
> [!NOTE]
|
## 2025-07-12
|
||||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
|
||||||
|
|
||||||
|
## 2025-07-11
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- immich: hotfix #5921 [@vhsdream](https://github.com/vhsdream) ([#5938](https://github.com/community-scripts/ProxmoxVE/pull/5938))
|
||||||
|
- bookstack: add setup_composer in update [@MickLesk](https://github.com/MickLesk) ([#5935](https://github.com/community-scripts/ProxmoxVE/pull/5935))
|
||||||
|
- Quickfix: Immich: revert install sequence [@vhsdream](https://github.com/vhsdream) ([#5932](https://github.com/community-scripts/ProxmoxVE/pull/5932))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Refactor & Function Bump: Docker [@MickLesk](https://github.com/MickLesk) ([#5889](https://github.com/community-scripts/ProxmoxVE/pull/5889))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Immich: handle custom library dependency updates; other fixes [@vhsdream](https://github.com/vhsdream) ([#5896](https://github.com/community-scripts/ProxmoxVE/pull/5896))
|
||||||
|
|
||||||
|
## 2025-07-10
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Refactor: Habitica [@MickLesk](https://github.com/MickLesk) ([#5911](https://github.com/community-scripts/ProxmoxVE/pull/5911))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: fix breaking re-download of lxc containers [@MickLesk](https://github.com/MickLesk) ([#5906](https://github.com/community-scripts/ProxmoxVE/pull/5906))
|
||||||
|
- PLANKA: Fix paths to application directory [@tremor021](https://github.com/tremor021) ([#5900](https://github.com/community-scripts/ProxmoxVE/pull/5900))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: EMQX + Update-Function + Improved NodeJS Crawling [@MickLesk](https://github.com/MickLesk) ([#5907](https://github.com/community-scripts/ProxmoxVE/pull/5907))
|
||||||
|
|
||||||
|
## 2025-07-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Omada Update: add missing exit [@MickLesk](https://github.com/MickLesk) ([#5894](https://github.com/community-scripts/ProxmoxVE/pull/5894))
|
||||||
|
- FreshRSS: fix needed php modules [@MickLesk](https://github.com/MickLesk) ([#5886](https://github.com/community-scripts/ProxmoxVE/pull/5886))
|
||||||
|
- core: Fix VAAPI passthrough for unprivileged LXC containers via devX [@MickLesk](https://github.com/MickLesk) ([#5875](https://github.com/community-scripts/ProxmoxVE/pull/5875))
|
||||||
|
- tools.func: fix an bug while php libapache2-mod breaks [@MickLesk](https://github.com/MickLesk) ([#5857](https://github.com/community-scripts/ProxmoxVE/pull/5857))
|
||||||
|
- BabyBuddy: fix path issues for update [@MickLesk](https://github.com/MickLesk) ([#5856](https://github.com/community-scripts/ProxmoxVE/pull/5856))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: strip leading folders for prebuild assets [@MickLesk](https://github.com/MickLesk) ([#5865](https://github.com/community-scripts/ProxmoxVE/pull/5865))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Refactor: Stirling-PDF [@MickLesk](https://github.com/MickLesk) ([#5872](https://github.com/community-scripts/ProxmoxVE/pull/5872))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- 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: Firefly [@tremor021](https://github.com/tremor021) ([#5844](https://github.com/community-scripts/ProxmoxVE/pull/5844))
|
||||||
|
- Refactor: gatus [@tremor021](https://github.com/tremor021) ([#5849](https://github.com/community-scripts/ProxmoxVE/pull/5849))
|
||||||
|
- 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: Commafeed [@tremor021](https://github.com/tremor021) ([#5802](https://github.com/community-scripts/ProxmoxVE/pull/5802))
|
||||||
|
- Refactor: FlareSolverr [@tremor021](https://github.com/tremor021) ([#5845](https://github.com/community-scripts/ProxmoxVE/pull/5845))
|
||||||
|
- Refactor: Glance [@tremor021](https://github.com/tremor021) ([#5874](https://github.com/community-scripts/ProxmoxVE/pull/5874))
|
||||||
|
- Refactor: Gitea [@tremor021](https://github.com/tremor021) ([#5876](https://github.com/community-scripts/ProxmoxVE/pull/5876))
|
||||||
|
- Refactor: Ghost (use now MySQL) [@MickLesk](https://github.com/MickLesk) ([#5871](https://github.com/community-scripts/ProxmoxVE/pull/5871))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 📂 Github
|
||||||
|
|
||||||
|
- Github: AutoLabler | ChangeLog (Refactor) [@MickLesk](https://github.com/MickLesk) ([#5868](https://github.com/community-scripts/ProxmoxVE/pull/5868))
|
||||||
|
|
||||||
|
## 2025-07-08
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Refactor: Emby [@tremor021](https://github.com/tremor021) ([#5839](https://github.com/community-scripts/ProxmoxVE/pull/5839))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Ollama: fix update script [@lucacome](https://github.com/lucacome) ([#5819](https://github.com/community-scripts/ProxmoxVE/pull/5819))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: add ffmpeg + minor improvement [@MickLesk](https://github.com/MickLesk) ([#5834](https://github.com/community-scripts/ProxmoxVE/pull/5834))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: ErsatzTV [@MickLesk](https://github.com/MickLesk) ([#5835](https://github.com/community-scripts/ProxmoxVE/pull/5835))
|
||||||
|
|
||||||
|
## 2025-07-07
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Fix/stirling pdf script [@JcMinarro](https://github.com/JcMinarro) ([#5803](https://github.com/community-scripts/ProxmoxVE/pull/5803))
|
||||||
|
- gitea-mirror: update repo-url [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5794](https://github.com/community-scripts/ProxmoxVE/pull/5794))
|
||||||
|
- Fix unbound var in pulse.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5807](https://github.com/community-scripts/ProxmoxVE/pull/5807))
|
||||||
|
- Bookstack: Fix PHP Issue & Bump to PHP 8.3 [@MickLesk](https://github.com/MickLesk) ([#5779](https://github.com/community-scripts/ProxmoxVE/pull/5779))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Refactor: Threadfin (+ updatable) [@MickLesk](https://github.com/MickLesk) ([#5783](https://github.com/community-scripts/ProxmoxVE/pull/5783))
|
||||||
|
- tools.func: better handling when unpacking tarfiles in prebuild mode [@MickLesk](https://github.com/MickLesk) ([#5781](https://github.com/community-scripts/ProxmoxVE/pull/5781))
|
||||||
|
- tools.func: add AVX check for MongoDB [@MickLesk](https://github.com/MickLesk) ([#5780](https://github.com/community-scripts/ProxmoxVE/pull/5780))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Docmost [@tremor021](https://github.com/tremor021) ([#5806](https://github.com/community-scripts/ProxmoxVE/pull/5806))
|
||||||
|
- Refactor: Baby Buddy [@tremor021](https://github.com/tremor021) ([#5769](https://github.com/community-scripts/ProxmoxVE/pull/5769))
|
||||||
|
- Refactor: Changed the way we install BunkerWeb by leveraging the brand new install-bunkerweb.sh [@TheophileDiot](https://github.com/TheophileDiot) ([#5707](https://github.com/community-scripts/ProxmoxVE/pull/5707))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- PBS: add hint for advanced installs [@MickLesk](https://github.com/MickLesk) ([#5788](https://github.com/community-scripts/ProxmoxVE/pull/5788))
|
||||||
|
- EMQX: Add warning to website [@tremor021](https://github.com/tremor021) ([#5770](https://github.com/community-scripts/ProxmoxVE/pull/5770))
|
||||||
|
|
||||||
|
## 2025-07-06
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Refactor: Barcodebuddy [@tremor021](https://github.com/tremor021) ([#5735](https://github.com/community-scripts/ProxmoxVE/pull/5735))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Fix update script for Mafl: ensure directory is removed recursively [@jonalbr](https://github.com/jonalbr) ([#5759](https://github.com/community-scripts/ProxmoxVE/pull/5759))
|
||||||
|
- BookStack: Typo fix [@tremor021](https://github.com/tremor021) ([#5746](https://github.com/community-scripts/ProxmoxVE/pull/5746))
|
||||||
|
- Resolves incorrect URL at end of Pocket ID script [@johnsturgeon](https://github.com/johnsturgeon) ([#5743](https://github.com/community-scripts/ProxmoxVE/pull/5743))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [Feature] Add option to expose Docker via TCP port (alpine docker) [@oformaniuk](https://github.com/oformaniuk) ([#5716](https://github.com/community-scripts/ProxmoxVE/pull/5716))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Bitmagnet [@tremor021](https://github.com/tremor021) ([#5733](https://github.com/community-scripts/ProxmoxVE/pull/5733))
|
||||||
|
- Refactor: Baikal [@tremor021](https://github.com/tremor021) ([#5736](https://github.com/community-scripts/ProxmoxVE/pull/5736))
|
||||||
|
|
||||||
|
## 2025-07-05
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: BookStack [@tremor021](https://github.com/tremor021) ([#5732](https://github.com/community-scripts/ProxmoxVE/pull/5732))
|
||||||
|
- Refactor: Authelia [@tremor021](https://github.com/tremor021) ([#5722](https://github.com/community-scripts/ProxmoxVE/pull/5722))
|
||||||
|
- Refactor: Dashy [@tremor021](https://github.com/tremor021) ([#5723](https://github.com/community-scripts/ProxmoxVE/pull/5723))
|
||||||
|
- Refactor: CryptPad [@tremor021](https://github.com/tremor021) ([#5724](https://github.com/community-scripts/ProxmoxVE/pull/5724))
|
||||||
|
- Refactor: ByteStash [@tremor021](https://github.com/tremor021) ([#5725](https://github.com/community-scripts/ProxmoxVE/pull/5725))
|
||||||
|
- Refactor: AgentDVR [@tremor021](https://github.com/tremor021) ([#5726](https://github.com/community-scripts/ProxmoxVE/pull/5726))
|
||||||
|
|
||||||
## 2025-07-04
|
## 2025-07-04
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Refactor: Mafl [@tremor021](https://github.com/tremor021) ([#5702](https://github.com/community-scripts/ProxmoxVE/pull/5702))
|
||||||
|
- Outline: Fix sed command for v0.85.0 [@tremor021](https://github.com/tremor021) ([#5688](https://github.com/community-scripts/ProxmoxVE/pull/5688))
|
||||||
|
- Komodo: Update Script to use FerretDB / remove psql & sqlite options [@MickLesk](https://github.com/MickLesk) ([#5690](https://github.com/community-scripts/ProxmoxVE/pull/5690))
|
||||||
|
- ESPHome: Fix Linking issue to prevent version mismatch [@MickLesk](https://github.com/MickLesk) ([#5685](https://github.com/community-scripts/ProxmoxVE/pull/5685))
|
||||||
|
- Cloudflare-DDNS: fix unvisible read command at install [@MickLesk](https://github.com/MickLesk) ([#5682](https://github.com/community-scripts/ProxmoxVE/pull/5682))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Core layer refactor: centralized error traps and msg_* consistency [@MickLesk](https://github.com/MickLesk) ([#5705](https://github.com/community-scripts/ProxmoxVE/pull/5705))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Update Iptag [@DesertGamer](https://github.com/DesertGamer) ([#5677](https://github.com/community-scripts/ProxmoxVE/pull/5677))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- MySQL phpMyAdmin Access Information [@austinpilz](https://github.com/austinpilz) ([#5679](https://github.com/community-scripts/ProxmoxVE/pull/5679))
|
||||||
|
|
||||||
## 2025-07-03
|
## 2025-07-03
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="#">
|
<a href="#">
|
||||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo.png" height="100px" />
|
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png" height="100px" />
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -32,6 +32,15 @@ function update_script() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||||
|
|
||||||
|
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
||||||
|
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
||||||
|
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
||||||
|
echo -e "${YW}Please follow the migration guide:${CL}"
|
||||||
|
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||||
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||||
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||||
|
|||||||
@@ -31,16 +31,16 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
|
if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
curl -fsSL "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb" -o $(basename "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb")
|
|
||||||
$STD dpkg -i "authelia_${RELEASE}_amd64.deb"
|
fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -f "authelia_${RELEASE}_amd64.deb"
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/babybuddy_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.babybuddy 2>/dev/null)" ]] || [[ ! -f ~/.babybuddy ]]; then
|
||||||
setup_uv
|
setup_uv
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
@@ -38,21 +38,18 @@ 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"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
cd /opt/babybuddy
|
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
|
|
||||||
mv /tmp/production.py.bak babybuddy/settings/production.py
|
|
||||||
cd /opt/babybuddy
|
cd /opt/babybuddy
|
||||||
|
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
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Fixing permissions"
|
msg_info "Fixing permissions"
|
||||||
@@ -66,9 +63,6 @@ function update_script() {
|
|||||||
systemctl start nginx
|
systemctl start nginx
|
||||||
msg_ok "Services Started"
|
msg_ok "Services Started"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f "$temp_file"
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
17
ct/baikal.sh
17
ct/baikal.sh
@@ -23,34 +23,35 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/baikal ]]; then
|
if [[ ! -d /opt/baikal ]]; 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/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.baikal 2>/dev/null)" ]] || [[ ! -f ~/.baikal ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" -o $(basename "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip")
|
|
||||||
mv /opt/baikal /opt/baikal-backup
|
mv /opt/baikal /opt/baikal-backup
|
||||||
$STD unzip -o "baikal-${RELEASE}.zip"
|
msg_ok "Backed up data"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||||
|
|
||||||
|
msg_info "Configuring Baikal"
|
||||||
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
|
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
|
||||||
cp -r /opt/baikal-backup/Specific/ /opt/baikal/
|
cp -r /opt/baikal-backup/Specific/ /opt/baikal/
|
||||||
chown -R www-data:www-data /opt/baikal/
|
chown -R www-data:www-data /opt/baikal/
|
||||||
chmod -R 755 /opt/baikal/
|
chmod -R 755 /opt/baikal/
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Configured Baikal"
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/baikal-${RELEASE}.zip"
|
|
||||||
rm -rf /opt/baikal-backup
|
rm -rf /opt/baikal-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
|||||||
@@ -23,27 +23,28 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/barcodebuddy ]]; then
|
if [[ ! -d /opt/barcodebuddy ]]; 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/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.barcodebuddy 2>/dev/null)" ]] || [[ ! -f ~/.barcodebuddy ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
systemctl stop barcodebuddy
|
systemctl stop barcodebuddy
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cd /opt
|
|
||||||
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
|
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
|
||||||
curl -fsSL "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip")
|
msg_ok "Backed up data"
|
||||||
$STD unzip "v${RELEASE}.zip"
|
|
||||||
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
|
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
|
||||||
|
|
||||||
|
msg_info "Configuring ${APP}"
|
||||||
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
|
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
|
||||||
chown -R www-data:www-data /opt/barcodebuddy/data
|
chown -R www-data:www-data /opt/barcodebuddy/data
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Configured ${APP}"
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
@@ -51,7 +52,6 @@ function update_script() {
|
|||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -r "/opt/v${RELEASE}.zip"
|
|
||||||
rm -r /opt/barcodebuddy-backup
|
rm -r /opt/barcodebuddy-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
|||||||
@@ -28,12 +28,12 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.bitmagnet 2>/dev/null)" ]] || [[ ! -f ~/.bitmagnet ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop bitmagnet-web
|
systemctl stop bitmagnet-web
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Backing up database"
|
msg_info "Backing up data"
|
||||||
rm -f /tmp/backup.sql
|
rm -f /tmp/backup.sql
|
||||||
$STD sudo -u postgres pg_dump \
|
$STD sudo -u postgres pg_dump \
|
||||||
--column-inserts \
|
--column-inserts \
|
||||||
@@ -56,31 +56,26 @@ function update_script() {
|
|||||||
bitmagnet \
|
bitmagnet \
|
||||||
>/tmp/backup.sql
|
>/tmp/backup.sql
|
||||||
mv /tmp/backup.sql /opt/
|
mv /tmp/backup.sql /opt/
|
||||||
msg_ok "Database backed up"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
|
||||||
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
||||||
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
||||||
rm -rf /opt/bitmagnet/*
|
msg_ok "Data backed up"
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
rm -rf /opt/bitmagnet
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/bitmagnet
|
cd /opt/bitmagnet
|
||||||
VREL=v$RELEASE
|
VREL=v$RELEASE
|
||||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||||
chmod +x bitmagnet
|
chmod +x bitmagnet
|
||||||
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
||||||
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start bitmagnet-web
|
systemctl start bitmagnet-web
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f "$temp_file"
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
@@ -23,25 +23,33 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/bookstack ]]; then
|
if [[ ! -d /opt/bookstack ]]; 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/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.bookstack 2>/dev/null)" ]] || [[ ! -f ~/.bookstack ]]; then
|
||||||
msg_info "Stopping Apache2"
|
msg_info "Stopping Apache2"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
mv /opt/bookstack /opt/bookstack-backup
|
mv /opt/bookstack /opt/bookstack-backup
|
||||||
curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "/opt/BookStack-${RELEASE}.zip"
|
msg_ok "Backup finished"
|
||||||
$STD unzip "/opt/BookStack-${RELEASE}.zip" -d /opt
|
|
||||||
mv "/opt/BookStack-${RELEASE}" /opt/bookstack
|
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
|
||||||
|
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
|
||||||
|
setup_composer
|
||||||
|
|
||||||
|
msg_info "Restoring backup"
|
||||||
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
||||||
[[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
|
[[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
|
||||||
[[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
|
[[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
|
||||||
[[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
|
[[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
|
||||||
|
msg_ok "Backup restored"
|
||||||
|
|
||||||
|
msg_info "Configuring BookStack"
|
||||||
cd /opt/bookstack
|
cd /opt/bookstack
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer install --no-dev
|
$STD composer install --no-dev
|
||||||
@@ -51,7 +59,7 @@ function update_script() {
|
|||||||
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
||||||
chmod -R 640 /opt/bookstack/.env
|
chmod -R 640 /opt/bookstack/.env
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Configured BookStack"
|
||||||
|
|
||||||
msg_info "Starting Apache2"
|
msg_info "Starting Apache2"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
@@ -59,7 +67,6 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf /opt/bookstack-backup
|
rm -rf /opt/bookstack-backup
|
||||||
rm -rf "/opt/BookStack-${RELEASE}.zip"
|
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ Pin: version ${RELEASE}
|
|||||||
Pin-Priority: 1001
|
Pin-Priority: 1001
|
||||||
EOF
|
EOF
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y nginx=1.26.3*
|
apt-mark unhold bunkerweb nginx
|
||||||
apt-get install -y bunkerweb=${RELEASE}
|
apt-get install -y --allow-downgrades bunkerweb=${RELEASE}
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
|
|||||||
@@ -23,39 +23,39 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/bytestash ]]; then
|
if [[ ! -d /opt/bytestash ]]; 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/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.bytestash 2>/dev/null)" ]] || [[ ! -f ~/.bytestash ]]; then
|
||||||
|
|
||||||
|
read -rp "${TAB3}Did you make a backup via application WebUI? (y/n): " backuped
|
||||||
|
if [[ "$backuped" =~ ^[Yy]$ ]]; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop bytestash-backend
|
systemctl stop bytestash-backend
|
||||||
systemctl stop bytestash-frontend
|
systemctl stop bytestash-frontend
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
rm -rf /opt/bytestash
|
||||||
temp_file=$(mktemp)
|
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
|
||||||
curl -fsSL "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf $temp_file
|
msg_info "Configuring ByteStash"
|
||||||
rm -rf /opt/bytestash/server/node_modules
|
|
||||||
rm -rf /opt/bytestash/client/node_modules
|
|
||||||
cp -rf ByteStash-${RELEASE}/* /opt/bytestash
|
|
||||||
cd /opt/bytestash/server
|
cd /opt/bytestash/server
|
||||||
$STD npm install
|
$STD npm install
|
||||||
cd /opt/bytestash/client
|
cd /opt/bytestash/client
|
||||||
$STD npm install
|
$STD npm install
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start bytestash-backend
|
systemctl start bytestash-backend
|
||||||
systemctl start bytestash-frontend
|
systemctl start bytestash-frontend
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
else
|
||||||
msg_info "Cleaning Up"
|
msg_error "PLEASE MAKE A BACKUP FIRST!"
|
||||||
rm -f $temp_file
|
exit
|
||||||
msg_ok "Cleaned"
|
fi
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -29,29 +29,27 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.cryptpad 2>/dev/null)" ]] || [[ ! -f ~/.cryptpad ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop cryptpad
|
systemctl stop cryptpad
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Backing up configuration"
|
||||||
|
[ -f /opt/cryptpad/config/config.js ] && mv /opt/cryptpad/config/config.js /opt/
|
||||||
|
msg_ok "Backed up configuration"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
|
||||||
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
temp_dir=$(mktemp -d)
|
|
||||||
cp -f /opt/cryptpad/config/config.js /opt/config.js
|
|
||||||
curl -fsSL "https://github.com/cryptpad/cryptpad/archive/refs/tags/${RELEASE}.tar.gz" -o "$temp_dir/cryptpad-${RELEASE}.tar.gz"
|
|
||||||
cd "$temp_dir"
|
|
||||||
tar zxf "cryptpad-${RELEASE}.tar.gz"
|
|
||||||
cp -rf "cryptpad-${RELEASE}"/* /opt/cryptpad
|
|
||||||
cd /opt/cryptpad
|
cd /opt/cryptpad
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run install:components
|
$STD npm run install:components
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
cp -f /opt/config.js /opt/cryptpad/config/config.js
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Restoring configuration"
|
||||||
rm -rf $temp_dir
|
mv /opt/config.js /opt/cryptpad/config/
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Configuration restored"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start cryptpad
|
systemctl start cryptpad
|
||||||
|
|||||||
10
ct/dashy.sh
10
ct/dashy.sh
@@ -29,7 +29,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.dashy 2>/dev/null)" ]] || [[ ! -f ~/.dashy ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop dashy
|
systemctl stop dashy
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
@@ -43,14 +43,13 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
msg_ok "Backed up conf.yml"
|
msg_ok "Backed up conf.yml"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
rm -rf /opt/dashy
|
rm -rf /opt/dashy
|
||||||
mkdir -p /opt/dashy
|
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
|
||||||
curl -fsSL "https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz -C /opt/dashy --strip-components=1
|
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cd /opt/dashy
|
cd /opt/dashy
|
||||||
npm install
|
npm install
|
||||||
npm run build
|
npm run build
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Restoring conf.yml"
|
msg_info "Restoring conf.yml"
|
||||||
@@ -65,6 +64,7 @@ function update_script() {
|
|||||||
msg_info "Starting Dashy"
|
msg_info "Starting Dashy"
|
||||||
systemctl start dashy
|
systemctl start dashy
|
||||||
msg_ok "Started Dashy"
|
msg_ok "Started Dashy"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
62
ct/docker.sh
62
ct/docker.sh
@@ -23,14 +23,64 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
get_latest_release() {
|
||||||
exit
|
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||||
fi
|
}
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
|
msg_info "Updating base system"
|
||||||
$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 "Base system updated"
|
||||||
|
|
||||||
|
msg_info "Updating Docker Engine"
|
||||||
|
$STD apt-get install --only-upgrade -y docker-ce docker-ce-cli containerd.io
|
||||||
|
msg_ok "Docker Engine updated"
|
||||||
|
|
||||||
|
if [[ -f /usr/local/lib/docker/cli-plugins/docker-compose ]]; then
|
||||||
|
COMPOSE_BIN="/usr/local/lib/docker/cli-plugins/docker-compose"
|
||||||
|
COMPOSE_NEW_VERSION=$(get_latest_release "docker/compose")
|
||||||
|
msg_info "Updating Docker Compose to $COMPOSE_NEW_VERSION"
|
||||||
|
curl -fsSL "https://github.com/docker/compose/releases/download/${COMPOSE_NEW_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
|
||||||
|
-o "$COMPOSE_BIN"
|
||||||
|
chmod +x "$COMPOSE_BIN"
|
||||||
|
msg_ok "Docker Compose updated"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker ps -a --format '{{.Names}}' | grep -q '^portainer$'; then
|
||||||
|
msg_info "Updating Portainer"
|
||||||
|
$STD docker pull portainer/portainer-ce:latest
|
||||||
|
$STD docker stop portainer && docker rm portainer
|
||||||
|
$STD docker volume create portainer_data >/dev/null 2>&1
|
||||||
|
$STD docker run -d \
|
||||||
|
-p 8000:8000 \
|
||||||
|
-p 9443:9443 \
|
||||||
|
--name=portainer \
|
||||||
|
--restart=always \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v portainer_data:/data \
|
||||||
|
portainer/portainer-ce:latest
|
||||||
|
msg_ok "Updated Portainer"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
|
||||||
|
msg_info "Updating Portainer Agent"
|
||||||
|
$STD docker pull portainer/agent:latest
|
||||||
|
$STD docker stop portainer_agent && docker rm portainer_agent
|
||||||
|
$STD docker run -d \
|
||||||
|
-p 9001:9001 \
|
||||||
|
--name=portainer_agent \
|
||||||
|
--restart=always \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
|
||||||
|
portainer/agent
|
||||||
|
msg_ok "Updated Portainer Agent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleanup complete"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,48 +27,35 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
||||||
msg_info "Installing Node.js 22"
|
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||||
$STD apt-get purge -y nodejs
|
|
||||||
rm -f /etc/apt/sources.list.d/nodesource.list
|
|
||||||
rm -f /etc/apt/keyrings/nodesource.gpg
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
$STD npm install -g pnpm@10.4.0
|
|
||||||
msg_ok "Node.js 22 installed"
|
|
||||||
fi
|
fi
|
||||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
export NODE_OPTIONS="--max_old_space_size=4096"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.docmost 2>/dev/null)" ]] || [[ ! -f ~/.docmost ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop docmost
|
systemctl stop docmost
|
||||||
msg_ok "${APP} Stopped"
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cp /opt/docmost/.env /opt/
|
cp /opt/docmost/.env /opt/
|
||||||
cp -r /opt/docmost/data /opt/
|
cp -r /opt/docmost/data /opt/
|
||||||
rm -rf /opt/docmost
|
rm -rf /opt/docmost
|
||||||
temp_file=$(mktemp)
|
msg_ok "Data backed up"
|
||||||
curl -fsSL "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar -xzf "$temp_file"
|
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
|
||||||
mv docmost-${RELEASE} /opt/docmost
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/docmost
|
cd /opt/docmost
|
||||||
mv /opt/.env /opt/docmost/.env
|
mv /opt/.env /opt/docmost/.env
|
||||||
mv /opt/data /opt/docmost/data
|
mv /opt/data /opt/docmost/data
|
||||||
$STD pnpm install --force
|
$STD pnpm install --force
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start docmost
|
systemctl start docmost
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f ${temp_file}
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
12
ct/emby.sh
12
ct/emby.sh
@@ -23,26 +23,26 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/emby-server ]]; then
|
if [[ ! -d /opt/emby-server ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.emby 2>/dev/null)" ]] || [[ ! -f ~/.emby ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop emby-server
|
systemctl stop emby-server
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
||||||
$STD curl -fsSL "https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb" -o "emby-server-deb_${LATEST}_amd64.deb"
|
|
||||||
$STD dpkg -i "emby-server-deb_${LATEST}_amd64.deb"
|
|
||||||
rm "emby-server-deb_${LATEST}_amd64.deb"
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start emby-server
|
systemctl start emby-server
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
35
ct/emqx.sh
35
ct/emqx.sh
@@ -23,14 +23,35 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
RELEASE=$(curl -fsSL https://www.emqx.com/en/downloads/enterprise | grep -oP '/en/downloads/enterprise/v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)
|
||||||
exit
|
if [[ "$RELEASE" != "$(cat ~/.emqx 2>/dev/null)" ]] || [[ ! -f ~/.emqx ]]; then
|
||||||
|
msg_info "Stopping EMQX"
|
||||||
|
systemctl stop emqx
|
||||||
|
msg_ok "Stopped EMQX"
|
||||||
|
|
||||||
|
msg_info "Downloading EMQX v${RELEASE}"
|
||||||
|
DEB_FILE="/tmp/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
|
||||||
|
curl -fsSL -o "$DEB_FILE" "https://www.emqx.com/en/downloads/enterprise/v${RELEASE}/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
|
||||||
|
msg_ok "Downloaded EMQX"
|
||||||
|
|
||||||
|
msg_info "Installing EMQX"
|
||||||
|
$STD apt-get install -y "$DEB_FILE"
|
||||||
|
msg_ok "Installed EMQX v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting EMQX"
|
||||||
|
systemctl start emqx
|
||||||
|
echo "$RELEASE" >~/.emqx
|
||||||
|
msg_ok "Started EMQX"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -f "$DEB_FILE"
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. EMQX is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
|
|
||||||
APP="ErsatzTV"
|
APP="ErsatzTV"
|
||||||
var_tags="${var_tags:-iptv}"
|
var_tags="${var_tags:-iptv}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-5}"
|
var_disk="${var_disk:-5}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
@@ -27,31 +27,18 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
||||||
if [[ ! -f /opt/${APP}_version.txt && $(echo "x.x.x" >/opt/${APP}_version.txt) || "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.ersatztv 2>/dev/null)" ]] || [[ ! -f ~/.ersatztv ]]; then
|
||||||
msg_info "Stopping ErsatzTV"
|
msg_info "Stopping ErsatzTV"
|
||||||
systemctl stop ersatzTV
|
systemctl stop ersatzTV
|
||||||
msg_ok "Stopped ErsatzTV"
|
msg_ok "Stopped ErsatzTV"
|
||||||
|
|
||||||
msg_info "Updating ErsatzTV"
|
FFMPEG_VERSION="latest" FFMPEG_TYPE="medium" setup_ffmpeg
|
||||||
cp -R /opt/ErsatzTV/ ErsatzTV-backup
|
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
|
||||||
rm ErsatzTV-backup/ErsatzTV
|
|
||||||
rm -rf /opt/ErsatzTV
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" -o "$temp_file"
|
|
||||||
tar -xzf "$temp_file"
|
|
||||||
mv ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
|
|
||||||
cp -R ErsatzTV-backup/* /opt/ErsatzTV/
|
|
||||||
rm -rf ErsatzTV-backup
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ErsatzTV"
|
|
||||||
|
|
||||||
msg_info "Starting ErsatzTV"
|
msg_info "Starting ErsatzTV"
|
||||||
systemctl start ersatzTV
|
systemctl start ersatzTV
|
||||||
msg_ok "Started ErsatzTV"
|
msg_ok "Started ErsatzTV"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f ${temp_file}
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@@ -73,6 +73,11 @@ EOF
|
|||||||
msg_ok "Updated systemd service"
|
msg_ok "Updated systemd service"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
msg_info "Linking esphome to /usr/local/bin"
|
||||||
|
rm -f /usr/local/bin/esphome
|
||||||
|
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
|
||||||
|
msg_ok "Linked esphome binary"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start esphomeDashboard
|
systemctl start esphomeDashboard
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${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}"
|
||||||
|
|||||||
@@ -29,17 +29,20 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.firefly 2>/dev/null)" ]] || [[ ! -f ~/.firefly ]]; then
|
||||||
msg_info "Stopping Apache2"
|
msg_info "Stopping Apache2"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Apache2"
|
msg_ok "Stopped Apache2"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cp /opt/firefly/.env /opt/.env
|
cp /opt/firefly/.env /opt/.env
|
||||||
cp -r /opt/firefly/storage /opt/storage
|
cp -r /opt/firefly/storage /opt/storage
|
||||||
cd /opt
|
msg_ok "Backed up data"
|
||||||
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o $(basename "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz")
|
|
||||||
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly --exclude='storage'
|
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
rm -rf /opt/firefly/storage
|
||||||
cp /opt/.env /opt/firefly/.env
|
cp /opt/.env /opt/firefly/.env
|
||||||
cp -r /opt/storage /opt/firefly/storage
|
cp -r /opt/storage /opt/firefly/storage
|
||||||
cd /opt/firefly
|
cd /opt/firefly
|
||||||
@@ -50,16 +53,12 @@ function update_script() {
|
|||||||
$STD php artisan view:clear
|
$STD php artisan view:clear
|
||||||
$STD php artisan firefly-iii:upgrade-database
|
$STD php artisan firefly-iii:upgrade-database
|
||||||
$STD php artisan firefly-iii:laravel-passport-keys
|
$STD php artisan firefly-iii:laravel-passport-keys
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Apache2"
|
msg_info "Starting Apache2"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Apache2"
|
msg_ok "Started Apache2"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
|||||||
@@ -23,20 +23,23 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then
|
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://github.com/FlareSolverr/FlareSolverr/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/FlareSolverr/FlareSolverr/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 ~/.flaresolverr 2>/dev/null)" ]] || [[ ! -f ~/.flaresolverr ]]; then
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Stopping service"
|
||||||
systemctl stop flaresolverr
|
systemctl stop flaresolverr
|
||||||
curl -fsSL "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz" -o $(basename "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz")
|
msg_ok "Stopped service"
|
||||||
tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
|
|
||||||
rm flaresolverr_linux_x64.tar.gz
|
rm -rf /opt/flaresolverr
|
||||||
|
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
systemctl start flaresolverr
|
systemctl start flaresolverr
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Started service"
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -28,20 +28,17 @@ 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/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
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
|
if [[ "${RELEASE}" != "$(cat ~/.fluid-calendar 2>/dev/null)" ]] || [[ ! -f ~/.fluid-calendar ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop fluid-calendar.service
|
systemctl stop fluid-calendar
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
cp /opt/fluid-calendar/.env /opt/fluid.env
|
cp /opt/fluid-calendar/.env /opt/fluid.env
|
||||||
rm -rf /opt/fluid-calendar
|
rm -rf /opt/fluid-calendar
|
||||||
tmp_file=$(mktemp)
|
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
|
||||||
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
|
|
||||||
$STD unzip $tmp_file
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
mv ${APP}-${RELEASE}/ /opt/fluid-calendar
|
|
||||||
mv /opt/fluid.env /opt/fluid-calendar/.env
|
mv /opt/fluid.env /opt/fluid-calendar/.env
|
||||||
cd /opt/fluid-calendar
|
cd /opt/fluid-calendar
|
||||||
export NEXT_TELEMETRY_DISABLED=1
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
@@ -52,14 +49,9 @@ function update_script() {
|
|||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start fluid-calendar.service
|
systemctl start fluid-calendar
|
||||||
msg_ok "Started $APP"
|
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"
|
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}"
|
||||||
|
|||||||
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}"
|
||||||
|
|||||||
@@ -23,8 +23,13 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
|
|
||||||
|
if ! dpkg-query -W -f='${Status}' mariadb-server 2>/dev/null | grep -q "install ok installed"; then
|
||||||
|
setup_mysql
|
||||||
|
fi
|
||||||
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} LXC"
|
||||||
if command -v ghost &>/dev/null; then
|
if command -v ghost &>/dev/null; then
|
||||||
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
|
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
|
||||||
latest_version=$(npm show ghost-cli version)
|
latest_version=$(npm show ghost-cli version)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: CrazyWolf13
|
# Author: CrazyWolf13
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/arunavo4/gitea-mirror
|
# Source: https://github.com/RayLabsHQ/gitea-mirror
|
||||||
|
|
||||||
APP="gitea-mirror"
|
APP="gitea-mirror"
|
||||||
var_tags="${var_tags:-mirror;gitea}"
|
var_tags="${var_tags:-mirror;gitea}"
|
||||||
@@ -28,7 +28,7 @@ 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/arunavo4/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/RayLabsHQ/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
@@ -48,7 +48,7 @@ function update_script() {
|
|||||||
msg_ok "Installed Bun"
|
msg_ok "Installed Bun"
|
||||||
|
|
||||||
rm -rf /opt/gitea-mirror
|
rm -rf /opt/gitea-mirror
|
||||||
fetch_and_deploy_gh_release "gitea-mirror" "arunavo4/gitea-mirror"
|
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
|
||||||
|
|
||||||
msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
|
msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
|
||||||
cd /opt/gitea-mirror
|
cd /opt/gitea-mirror
|
||||||
|
|||||||
19
ct/gitea.sh
19
ct/gitea.sh
@@ -23,20 +23,29 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f /usr/local/bin/gitea ]]; then
|
if [[ ! -f /usr/local/bin/gitea ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
if [[ "${RELEASE}" != "$(cat ~/.gitea 2>/dev/null)" ]] || [[ ! -f ~/.gitea ]]; then
|
||||||
FILENAME="gitea-$RELEASE-linux-amd64"
|
msg_info "Stopping service"
|
||||||
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $FILENAME
|
|
||||||
systemctl stop gitea
|
systemctl stop gitea
|
||||||
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
rm -rf /usr/local/bin/gitea
|
rm -rf /usr/local/bin/gitea
|
||||||
mv $FILENAME /usr/local/bin/gitea
|
fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
|
||||||
chmod +x /usr/local/bin/gitea
|
chmod +x /usr/local/bin/gitea
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
systemctl start gitea
|
systemctl start gitea
|
||||||
msg_ok "Updated $APP Successfully"
|
msg_ok "Started service"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
15
ct/glance.sh
15
ct/glance.sh
@@ -28,28 +28,19 @@ 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/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.glance 2>/dev/null)" ]] || [[ ! -f ~/.glance ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop glance
|
systemctl stop glance
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
rm -f /opt/glance/glance
|
||||||
cd /opt
|
fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-amd64.tar.gz"
|
||||||
curl -fsSL "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz" -o $(basename "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz")
|
|
||||||
rm -rf /opt/glance/glance
|
|
||||||
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
|
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start glance
|
systemctl start glance
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/glance-linux-amd64.tar.gz
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
|||||||
@@ -28,35 +28,48 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/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 ~/.habitica 2>/dev/null)" ]] || [[ ! -f ~/.habitica ]]; then
|
||||||
|
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop habitica-mongodb
|
systemctl stop habitica-mongodb
|
||||||
systemctl stop habitica
|
systemctl stop habitica
|
||||||
systemctl stop habitica-client
|
systemctl stop habitica-client
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Save configuration"
|
||||||
|
if [[ -f /opt/habitica/config.json ]]; then
|
||||||
|
cp /opt/habitica/config.json ~/config.json
|
||||||
|
msg_ok "Saved configuration"
|
||||||
|
else
|
||||||
|
msg_warn "No configuration file found, skipping save"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
|
||||||
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/HabitRPG/habitica/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf $temp_file
|
|
||||||
cp -rf habitica-${RELEASE}/* /opt/habitica
|
|
||||||
cd /opt/habitica
|
cd /opt/habitica
|
||||||
$STD npm i
|
$STD npm i
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
$STD npm run postinstall
|
||||||
|
$STD npm run client:build
|
||||||
|
$STD gulp build:prod
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Restoring configuration"
|
||||||
|
if [[ -f ~/config.json ]]; then
|
||||||
|
cp ~/config.json /opt/habitica/config.json
|
||||||
|
msg_ok "Restored configuration"
|
||||||
|
else
|
||||||
|
msg_warn "No configuration file found to restore"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start habitica-mongodb
|
systemctl start habitica-mongodb
|
||||||
systemctl start habitica
|
systemctl start habitica
|
||||||
systemctl start habitica-client
|
systemctl start habitica-client
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f $temp_file
|
|
||||||
rm -rf ~/habitica-${RELEASE}
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Update Successful"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
@@ -71,4 +84,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}:8080${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
______ _ ___ _ __ __
|
______ _ ___
|
||||||
/_ __/____(_) (_)_ ______ ___ / | / /___ / /____ _____
|
/_ __/____(_) (_)_ ______ ___
|
||||||
/ / / ___/ / / / / / / __ `__ \ / |/ / __ \/ __/ _ \/ ___/
|
/ / / ___/ / / / / / / __ `__ \
|
||||||
/ / / / / / / / /_/ / / / / / / / /| / /_/ / /_/ __(__ )
|
/ / / / / / / / /_/ / / / / / /
|
||||||
/_/ /_/ /_/_/_/\__,_/_/ /_/ /_/ /_/ |_/\____/\__/\___/____/
|
/_/ /_/ /_/_/_/\__,_/_/ /_/ /_/
|
||||||
|
|
||||||
|
|||||||
272
ct/immich.sh
272
ct/immich.sh
@@ -51,134 +51,12 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
if [[ -f ~/.immich_library_revisions ]]; then
|
if [[ -f ~/.immich_library_revisions ]]; then
|
||||||
libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips")
|
libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips")
|
||||||
readarray -d '' NEW_REVISIONS < <(for library in "${libraries[@]}"; do
|
|
||||||
echo "$library: $(curl -fsSL https://raw.githubusercontent.com/immich-app/base-images/refs/heads/main/server/sources/"$library".json | jq -cr '.revision' -)"
|
|
||||||
done)
|
|
||||||
UPDATED_REVISIONS="$(comm -13 <(sort ~/.immich_library_revisions) <(echo -n "${NEW_REVISIONS[@]}" | sort))"
|
|
||||||
if [[ "$UPDATED_REVISIONS" ]]; then
|
|
||||||
readarray -t NAMES < <(echo "$UPDATED_REVISIONS" | awk -F ':' '{print $1}')
|
|
||||||
rm -rf "$SOURCE_DIR"
|
|
||||||
mkdir -p "$SOURCE_DIR"
|
|
||||||
cd "$BASE_DIR"
|
cd "$BASE_DIR"
|
||||||
$STD git pull
|
$STD git pull
|
||||||
cd "$STAGING_DIR"
|
for library in "${libraries[@]}"; do
|
||||||
for name in "${NAMES[@]}"; do
|
compile_"$library"
|
||||||
if [[ "$name" == "libjxl" ]]; then
|
|
||||||
msg_info "Recompiling libjxl"
|
|
||||||
SOURCE=${SOURCE_DIR}/libjxl
|
|
||||||
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
|
|
||||||
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
|
|
||||||
: "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
|
|
||||||
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
|
|
||||||
cd "$SOURCE"
|
|
||||||
$STD git reset --hard "$LIBJXL_REVISION"
|
|
||||||
$STD git submodule update --init --recursive --depth 1 --recommend-shallow
|
|
||||||
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-empty-dht-marker.patch
|
|
||||||
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-icc-warning.patch
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
$STD cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DBUILD_TESTING=OFF \
|
|
||||||
-DJPEGXL_ENABLE_DOXYGEN=OFF \
|
|
||||||
-DJPEGXL_ENABLE_MANPAGES=OFF \
|
|
||||||
-DJPEGXL_ENABLE_PLUGIN_GIMP210=OFF \
|
|
||||||
-DJPEGXL_ENABLE_BENCHMARK=OFF \
|
|
||||||
-DJPEGXL_ENABLE_EXAMPLES=OFF \
|
|
||||||
-DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
|
|
||||||
-DJPEGXL_FORCE_SYSTEM_HWY=ON \
|
|
||||||
-DJPEGXL_ENABLE_JPEGLI=ON \
|
|
||||||
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=ON \
|
|
||||||
-DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON \
|
|
||||||
-DJPEGXL_ENABLE_PLUGINS=ON \
|
|
||||||
-DJPEGLI_LIBJPEG_LIBRARY_SOVERSION="$JPEGLI_LIBJPEG_LIBRARY_SOVERSION" \
|
|
||||||
-DJPEGLI_LIBJPEG_LIBRARY_VERSION="$JPEGLI_LIBJPEG_LIBRARY_VERSION" \
|
|
||||||
-DLIBJPEG_TURBO_VERSION_NUMBER=2001005 \
|
|
||||||
..
|
|
||||||
$STD cmake --build . -- -j"$(nproc)"
|
|
||||||
$STD cmake --install .
|
|
||||||
ldconfig /usr/local/lib
|
|
||||||
$STD make clean
|
|
||||||
cd "$STAGING_DIR"
|
|
||||||
rm -rf "$SOURCE"/{build,third_party}
|
|
||||||
msg_ok "Recompiled libjxl"
|
|
||||||
fi
|
|
||||||
if [[ "$name" == "libheif" ]]; then
|
|
||||||
msg_info "Recompiling libheif"
|
|
||||||
SOURCE=${SOURCE_DIR}/libheif
|
|
||||||
: "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
|
|
||||||
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
|
|
||||||
cd "$SOURCE"
|
|
||||||
$STD git reset --hard "$LIBHEIF_REVISION"
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
$STD cmake --preset=release-noplugins \
|
|
||||||
-DWITH_DAV1D=ON \
|
|
||||||
-DENABLE_PARALLEL_TILE_DECODING=ON \
|
|
||||||
-DWITH_LIBSHARPYUV=ON \
|
|
||||||
-DWITH_LIBDE265=ON \
|
|
||||||
-DWITH_AOM_DECODER=OFF \
|
|
||||||
-DWITH_AOM_ENCODER=OFF \
|
|
||||||
-DWITH_X265=OFF \
|
|
||||||
-DWITH_EXAMPLES=OFF \
|
|
||||||
..
|
|
||||||
$STD make install -j "$(nproc)"
|
|
||||||
ldconfig /usr/local/lib
|
|
||||||
$STD make clean
|
|
||||||
cd "$STAGING_DIR"
|
|
||||||
rm -rf "$SOURCE"/build
|
|
||||||
msg_ok "Recompiled libheif"
|
|
||||||
fi
|
|
||||||
if [[ "$name" == "libraw" ]]; then
|
|
||||||
msg_info "Recompiling libraw"
|
|
||||||
SOURCE=${SOURCE_DIR}/libraw
|
|
||||||
: "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
|
|
||||||
$STD git clone https://github.com/libraw/libraw.git "$SOURCE"
|
|
||||||
cd "$SOURCE"
|
|
||||||
$STD git reset --hard "$LIBRAW_REVISION"
|
|
||||||
$STD autoreconf --install
|
|
||||||
$STD ./configure
|
|
||||||
$STD make -j"$(nproc)"
|
|
||||||
$STD make install
|
|
||||||
ldconfig /usr/local/lib
|
|
||||||
$STD make clean
|
|
||||||
cd "$STAGING_DIR"
|
|
||||||
msg_ok "Recompiled libraw"
|
|
||||||
fi
|
|
||||||
if [[ "$name" == "imagemagick" ]]; then
|
|
||||||
msg_info "Recompiling ImageMagick"
|
|
||||||
SOURCE=$SOURCE_DIR/imagemagick
|
|
||||||
: "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
|
|
||||||
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
|
|
||||||
cd "$SOURCE"
|
|
||||||
$STD git reset --hard "$IMAGEMAGICK_REVISION"
|
|
||||||
$STD ./configure --with-modules
|
|
||||||
$STD make -j"$(nproc)"
|
|
||||||
$STD make install
|
|
||||||
ldconfig /usr/local/lib
|
|
||||||
$STD make clean
|
|
||||||
cd "$STAGING_DIR"
|
|
||||||
msg_ok "Recompiled ImageMagick"
|
|
||||||
fi
|
|
||||||
if [[ "$name" == "libvips" ]]; then
|
|
||||||
msg_info "Recompiling libvips"
|
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
|
||||||
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
|
|
||||||
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
|
||||||
cd "$SOURCE"
|
|
||||||
$STD git reset --hard "$LIBVIPS_REVISION"
|
|
||||||
$STD meson setup build --buildtype=release --libdir=lib -Dintrospection=disabled -Dtiff=disabled
|
|
||||||
cd build
|
|
||||||
$STD ninja install
|
|
||||||
ldconfig /usr/local/lib
|
|
||||||
cd "$STAGING_DIR"
|
|
||||||
rm -rf "$SOURCE"/build
|
|
||||||
msg_ok "Recompiled libvips"
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
echo -n "${NEW_REVISIONS[@]}" >~/.immich_library_revisions
|
msg_ok "Image-processing libraries updated"
|
||||||
msg_ok "Image-processing libraries compiled"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
||||||
@@ -245,6 +123,10 @@ function update_script() {
|
|||||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
|
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
|
cd "$APP_DIR"
|
||||||
|
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||||
|
$STD npm install sharp
|
||||||
|
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
||||||
msg_ok "Updated ${APP} web and microservices"
|
msg_ok "Updated ${APP} web and microservices"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
@@ -276,8 +158,6 @@ function update_script() {
|
|||||||
ln -s "$GEO_DIR" "$APP_DIR"
|
ln -s "$GEO_DIR" "$APP_DIR"
|
||||||
|
|
||||||
msg_info "Updating Immich CLI"
|
msg_info "Updating Immich CLI"
|
||||||
$STD npm install --build-from-source sharp
|
|
||||||
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
|
||||||
$STD npm i -g @immich/cli
|
$STD npm i -g @immich/cli
|
||||||
msg_ok "Updated Immich CLI"
|
msg_ok "Updated Immich CLI"
|
||||||
|
|
||||||
@@ -293,6 +173,144 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function compile_libjxl() {
|
||||||
|
SOURCE=${SOURCE_DIR}/libjxl
|
||||||
|
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
|
||||||
|
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
|
||||||
|
: "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
|
||||||
|
if [[ "${update:-}" ]] || [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
|
msg_info "Recompiling libjxl"
|
||||||
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
|
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
|
||||||
|
cd "$SOURCE"
|
||||||
|
$STD git reset --hard "$LIBJXL_REVISION"
|
||||||
|
$STD git submodule update --init --recursive --depth 1 --recommend-shallow
|
||||||
|
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-empty-dht-marker.patch
|
||||||
|
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-icc-warning.patch
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
$STD cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DBUILD_TESTING=OFF \
|
||||||
|
-DJPEGXL_ENABLE_DOXYGEN=OFF \
|
||||||
|
-DJPEGXL_ENABLE_MANPAGES=OFF \
|
||||||
|
-DJPEGXL_ENABLE_PLUGIN_GIMP210=OFF \
|
||||||
|
-DJPEGXL_ENABLE_BENCHMARK=OFF \
|
||||||
|
-DJPEGXL_ENABLE_EXAMPLES=OFF \
|
||||||
|
-DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
|
||||||
|
-DJPEGXL_FORCE_SYSTEM_HWY=ON \
|
||||||
|
-DJPEGXL_ENABLE_JPEGLI=ON \
|
||||||
|
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=ON \
|
||||||
|
-DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON \
|
||||||
|
-DJPEGXL_ENABLE_PLUGINS=ON \
|
||||||
|
-DJPEGLI_LIBJPEG_LIBRARY_SOVERSION="$JPEGLI_LIBJPEG_LIBRARY_SOVERSION" \
|
||||||
|
-DJPEGLI_LIBJPEG_LIBRARY_VERSION="$JPEGLI_LIBJPEG_LIBRARY_VERSION" \
|
||||||
|
-DLIBJPEG_TURBO_VERSION_NUMBER=2001005 \
|
||||||
|
..
|
||||||
|
$STD cmake --build . -- -j"$(nproc)"
|
||||||
|
$STD cmake --install .
|
||||||
|
ldconfig /usr/local/lib
|
||||||
|
$STD make clean
|
||||||
|
cd "$STAGING_DIR"
|
||||||
|
rm -rf "$SOURCE"/{build,third_party}
|
||||||
|
msg_ok "Recompiled libjxl"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function compile_libheif() {
|
||||||
|
SOURCE=${SOURCE_DIR}/libheif
|
||||||
|
if ! dpkg -l | grep -q libaom; then
|
||||||
|
$STD apt-get install -y libaom-dev
|
||||||
|
local update="required"
|
||||||
|
fi
|
||||||
|
: "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
|
||||||
|
if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
|
msg_info "Recompiling libheif"
|
||||||
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
|
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
|
||||||
|
cd "$SOURCE"
|
||||||
|
$STD git reset --hard "$LIBHEIF_REVISION"
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
$STD cmake --preset=release-noplugins \
|
||||||
|
-DWITH_DAV1D=ON \
|
||||||
|
-DENABLE_PARALLEL_TILE_DECODING=ON \
|
||||||
|
-DWITH_LIBSHARPYUV=ON \
|
||||||
|
-DWITH_LIBDE265=ON \
|
||||||
|
-DWITH_AOM_DECODER=OFF \
|
||||||
|
-DWITH_AOM_ENCODER=ON \
|
||||||
|
-DWITH_X265=OFF \
|
||||||
|
-DWITH_EXAMPLES=OFF \
|
||||||
|
..
|
||||||
|
$STD make install -j "$(nproc)"
|
||||||
|
ldconfig /usr/local/lib
|
||||||
|
$STD make clean
|
||||||
|
cd "$STAGING_DIR"
|
||||||
|
rm -rf "$SOURCE"/build
|
||||||
|
msg_ok "Recompiled libheif"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function compile_libraw() {
|
||||||
|
SOURCE=${SOURCE_DIR}/libraw
|
||||||
|
local update
|
||||||
|
: "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
|
||||||
|
if [[ "${update:-}" ]] || [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
|
msg_info "Recompiling libraw"
|
||||||
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
|
$STD git clone https://github.com/libraw/libraw.git "$SOURCE"
|
||||||
|
cd "$SOURCE"
|
||||||
|
$STD git reset --hard "$LIBRAW_REVISION"
|
||||||
|
$STD autoreconf --install
|
||||||
|
$STD ./configure
|
||||||
|
$STD make -j"$(nproc)"
|
||||||
|
$STD make install
|
||||||
|
ldconfig /usr/local/lib
|
||||||
|
$STD make clean
|
||||||
|
cd "$STAGING_DIR"
|
||||||
|
msg_ok "Recompiled libraw"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function compile_imagemagick() {
|
||||||
|
SOURCE=$SOURCE_DIR/imagemagick
|
||||||
|
: "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
|
||||||
|
if [[ "${update:-}" ]] || [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
|
msg_info "Recompiling ImageMagick"
|
||||||
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
|
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
|
||||||
|
cd "$SOURCE"
|
||||||
|
$STD git reset --hard "$IMAGEMAGICK_REVISION"
|
||||||
|
$STD ./configure --with-modules
|
||||||
|
$STD make -j"$(nproc)"
|
||||||
|
$STD make install
|
||||||
|
ldconfig /usr/local/lib
|
||||||
|
$STD make clean
|
||||||
|
cd "$STAGING_DIR"
|
||||||
|
msg_ok "Recompiled ImageMagick"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function compile_libvips() {
|
||||||
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
|
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
|
||||||
|
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
|
||||||
|
if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
|
msg_info "Recompiling libvips"
|
||||||
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
|
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
||||||
|
cd "$SOURCE"
|
||||||
|
$STD git reset --hard "$LIBVIPS_REVISION"
|
||||||
|
$STD meson setup build --buildtype=release --libdir=lib -Dintrospection=disabled -Dtiff=disabled
|
||||||
|
cd build
|
||||||
|
$STD ninja install
|
||||||
|
ldconfig /usr/local/lib
|
||||||
|
cd "$STAGING_DIR"
|
||||||
|
rm -rf "$SOURCE"/build
|
||||||
|
msg_ok "Recompiled libvips"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|||||||
@@ -36,6 +36,15 @@ function update_script() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||||
|
|
||||||
|
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
||||||
|
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
||||||
|
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
||||||
|
echo -e "${YW}Please follow the migration guide:${CL}"
|
||||||
|
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||||
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||||
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||||
|
|||||||
23
ct/mafl.sh
23
ct/mafl.sh
@@ -27,18 +27,31 @@ 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/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Updating Mafl to v${RELEASE} (Patience)"
|
if [[ "${RELEASE}" != "$(cat ~/.mafl 2>/dev/null)" ]] || [[ ! -f ~/.mafl ]]; then
|
||||||
|
msg_info "Stopping Mafl service"
|
||||||
systemctl stop mafl
|
systemctl stop mafl
|
||||||
curl -fsSL "https://github.com/hywax/mafl/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/hywax/mafl/archive/refs/tags/v${RELEASE}.tar.gz")
|
msg_ok "Service stopped"
|
||||||
tar -xzf v${RELEASE}.tar.gz
|
|
||||||
cp -r mafl-${RELEASE}/* /opt/mafl/
|
msg_info "Performing backup"
|
||||||
rm -rf mafl-${RELEASE}
|
mkdir -p /opt/mafl-backup/data
|
||||||
|
mv /opt/mafl/data /opt/mafl-backup/data
|
||||||
|
rm -rf /opt/mafl
|
||||||
|
msg_ok "Backup complete"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "mafl" "hywax/mafl"
|
||||||
|
|
||||||
|
msg_info "Updating Mafl to v${RELEASE}"
|
||||||
cd /opt/mafl
|
cd /opt/mafl
|
||||||
yarn install
|
yarn install
|
||||||
yarn build
|
yarn build
|
||||||
|
mv /opt/mafl-backup/data /opt/mafl/data
|
||||||
systemctl start mafl
|
systemctl start mafl
|
||||||
msg_ok "Updated Mafl to v${RELEASE}"
|
msg_ok "Updated Mafl to v${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ function update_script() {
|
|||||||
msg_info "Updating Ollama to ${RELEASE}"
|
msg_info "Updating Ollama to ${RELEASE}"
|
||||||
rm -rf /usr/local/lib/ollama
|
rm -rf /usr/local/lib/ollama
|
||||||
rm -rf /usr/local/bin/ollama
|
rm -rf /usr/local/bin/ollama
|
||||||
|
mkdir -p /usr/local/lib/ollama
|
||||||
tar -xzf "${TMP_TAR}" -C /usr/local/lib/ollama
|
tar -xzf "${TMP_TAR}" -C /usr/local/lib/ollama
|
||||||
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
|
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
|
||||||
echo "${RELEASE}" >/opt/Ollama_version.txt
|
echo "${RELEASE}" >/opt/Ollama_version.txt
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ function update_script() {
|
|||||||
$STD dpkg -i "$OMADA_PKG"
|
$STD dpkg -i "$OMADA_PKG"
|
||||||
rm -f "$OMADA_PKG"
|
rm -f "$OMADA_PKG"
|
||||||
msg_ok "Updated Omada Controller"
|
msg_ok "Updated Omada Controller"
|
||||||
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
22
ct/planka.sh
22
ct/planka.sh
@@ -40,20 +40,20 @@ function update_script() {
|
|||||||
mkdir -p /opt/planka-backup/user-avatars
|
mkdir -p /opt/planka-backup/user-avatars
|
||||||
mkdir -p /opt/planka-backup/background-images
|
mkdir -p /opt/planka-backup/background-images
|
||||||
mkdir -p /opt/planka-backup/attachments
|
mkdir -p /opt/planka-backup/attachments
|
||||||
mv /opt/planka/planka/.env /opt/planka-backup
|
mv /opt/planka/.env /opt/planka-backup
|
||||||
[ -n "$(ls -A /opt/planka/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/planka/public/favicons/* /opt/planka-backup/favicons/
|
[ -n "$(ls -A /opt/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/public/favicons/* /opt/planka-backup/favicons/
|
||||||
[ -n "$(ls -A /opt/planka/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/planka/public/user-avatars/* /opt/planka-backup/user-avatars/
|
[ -n "$(ls -A /opt/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/public/user-avatars/* /opt/planka-backup/user-avatars/
|
||||||
[ -n "$(ls -A /opt/planka/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/planka/public/background-images/* /opt/planka-backup/background-images/
|
[ -n "$(ls -A /opt/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/public/background-images/* /opt/planka-backup/background-images/
|
||||||
[ -n "$(ls -A /opt/planka/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/planka/private/attachments/* /opt/planka-backup/attachments/
|
[ -n "$(ls -A /opt/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/private/attachments/* /opt/planka-backup/attachments/
|
||||||
rm -rf /opt/planka
|
rm -rf /opt/planka
|
||||||
fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
|
fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
|
||||||
cd /opt/planka/planka
|
cd /opt/planka
|
||||||
$STD npm install
|
$STD npm install
|
||||||
mv /opt/planka-backup/.env /opt/planka/planka/
|
mv /opt/planka-backup/.env /opt/planka/
|
||||||
[ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/planka/public/favicons/
|
[ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/public/favicons/
|
||||||
[ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/planka/public/user-avatars/
|
[ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/public/user-avatars/
|
||||||
[ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/planka/public/background-images/
|
[ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/public/background-images/
|
||||||
[ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/planka/private/attachments/
|
[ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/private/attachments/
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
|
|||||||
@@ -86,4 +86,4 @@ 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} Configure your reverse proxy to point to:${BGN} ${IP}:1411${CL}"
|
echo -e "${INFO}${YW} Configure your reverse proxy to point to:${BGN} ${IP}:1411${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://{PUBLIC_URL}/login/setup${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}https://{PUBLIC_URL}/setup${CL}"
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ function update_script() {
|
|||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -27,29 +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
|
|
||||||
rm -rf /opt/Stirling-PDF/Stirling-PDF-*.jar
|
|
||||||
cp -r ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/
|
|
||||||
cp -r scripts /opt/Stirling-PDF/
|
|
||||||
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
|
||||||
|
|||||||
@@ -27,12 +27,24 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP"
|
|
||||||
systemctl stop threadfin.service
|
RELEASE=$(curl -fsSL https://api.github.com/repos/threadfin/threadfin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
curl -fsSL "https://github.com/Threadfin/Threadfin/releases/latest/download/Threadfin_linux_amd64" -o "/opt/threadfin/threadfin"
|
if [[ "${RELEASE}" != "$(cat ~/.threadfin 2>/dev/null)" ]] || [[ ! -f ~/.threadfin ]]; then
|
||||||
chmod +x /opt/threadfin/threadfin
|
|
||||||
systemctl start threadfin.service
|
msg_info "Stopping $APP"
|
||||||
msg_ok "Updated $APP"
|
systemctl stop threadfin
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "threadfin" "threadfin/threadfin" "singlefile" "latest" "/opt/threadfin" "Threadfin_linux_amd64"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start threadfin
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/TriliumNext/Trilium
|
# Source: https://github.com/TriliumNext/Trilium
|
||||||
|
|
||||||
APP="Trilium Notes"
|
APP="Trilium"
|
||||||
var_tags="${var_tags:-notes}"
|
var_tags="${var_tags:-notes}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
|
|||||||
6
frontend/public/json/add-iptag.json
generated
6
frontend/public/json/add-iptag.json
generated
@@ -37,12 +37,16 @@
|
|||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Configuration: `nano /opt/iptag/iptag.conf`. iptag.service must be restarted after change.",
|
"text": "Configuration: `nano /opt/iptag/iptag.conf`. iptag Service must be restarted after change. See here for full documentation: `https://github.com/community-scripts/ProxmoxVE/discussions/5790`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`",
|
"text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "You can execute the ip tool manually with `iptag-run`",
|
||||||
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
7
frontend/public/json/bunkerweb.json
generated
7
frontend/public/json/bunkerweb.json
generated
@@ -31,5 +31,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
2
frontend/public/json/dockge.json
generated
2
frontend/public/json/dockge.json
generated
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 5001,
|
"interface_port": 5001,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
|
|||||||
7
frontend/public/json/docmost.json
generated
7
frontend/public/json/docmost.json
generated
@@ -31,5 +31,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Use `cat ~/docmost.creds` to see database credentials.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
2
frontend/public/json/emqx.json
generated
2
frontend/public/json/emqx.json
generated
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 18083,
|
"interface_port": 18083,
|
||||||
"documentation": "https://docs.emqx.com/en/emqx/latest/",
|
"documentation": "https://docs.emqx.com/en/emqx/latest/",
|
||||||
|
|||||||
2
frontend/public/json/ersatztv.json
generated
2
frontend/public/json/ersatztv.json
generated
@@ -19,7 +19,7 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/ersatztv.sh",
|
"script": "ct/ersatztv.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 2,
|
||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
|
|||||||
4
frontend/public/json/gitea-mirror.json
generated
4
frontend/public/json/gitea-mirror.json
generated
@@ -9,9 +9,9 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 4321,
|
"interface_port": 4321,
|
||||||
"documentation": "https://github.com/arunavo4/gitea-mirror/",
|
"documentation": "https://github.com/RayLabsHQ/gitea-mirror/",
|
||||||
"config_path": "/etc/systemd/system/gitea-mirror.service",
|
"config_path": "/etc/systemd/system/gitea-mirror.service",
|
||||||
"website": "https://github.com/arunavo4/gitea-mirror/",
|
"website": "https://github.com/RayLabsHQ/gitea-mirror/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gitea-mirror.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gitea-mirror.webp",
|
||||||
"description": "Gitea Mirror auto-syncs GitHub repos to your self-hosted Gitea, with a sleek Web UI and easy Docker deployment. ",
|
"description": "Gitea Mirror auto-syncs GitHub repos to your self-hosted Gitea, with a sleek Web UI and easy Docker deployment. ",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
|
|||||||
2
frontend/public/json/habitica.json
generated
2
frontend/public/json/habitica.json
generated
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 3000,
|
||||||
"documentation": "https://github.com/HabitRPG/habitica/wiki",
|
"documentation": "https://github.com/HabitRPG/habitica/wiki",
|
||||||
"website": "https://habitica.com/",
|
"website": "https://habitica.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/habitica.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/habitica.webp",
|
||||||
|
|||||||
4
frontend/public/json/mysql.json
generated
4
frontend/public/json/mysql.json
generated
@@ -39,6 +39,10 @@
|
|||||||
{
|
{
|
||||||
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
|
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
|
||||||
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
4
frontend/public/json/proxmox-backup-server.json
generated
4
frontend/public/json/proxmox-backup-server.json
generated
@@ -35,6 +35,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Set a root password if using autologin. This will be the PBS password. `passwd root`",
|
"text": "Set a root password if using autologin. This will be the PBS password. `passwd root`",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Advanced Install is only possible without root password and root SSH access, you can configure this after installation.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
4
frontend/public/json/stirling-pdf.json
generated
4
frontend/public/json/stirling-pdf.json
generated
@@ -28,8 +28,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": "admin",
|
||||||
"password": null
|
"password": "stirling"
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
|||||||
2
frontend/public/json/threadfin.json
generated
2
frontend/public/json/threadfin.json
generated
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-06-12",
|
"date_created": "2024-06-12",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 34400,
|
"interface_port": 34400,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
|
|||||||
798
frontend/public/json/versions.json
generated
798
frontend/public/json/versions.json
generated
File diff suppressed because it is too large
Load Diff
@@ -14,11 +14,12 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y apt-transport-https
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y alsa-utils
|
apt-transport-https \
|
||||||
$STD apt-get install -y libxext-dev
|
alsa-utils \
|
||||||
$STD apt-get install -y fontconfig
|
libxext-dev \
|
||||||
$STD apt-get install -y libva-drm2
|
fontconfig \
|
||||||
|
libva-drm2
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing AgentDVR"
|
msg_info "Installing AgentDVR"
|
||||||
@@ -27,7 +28,6 @@ RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?pl
|
|||||||
cd /opt/agentdvr/agent
|
cd /opt/agentdvr/agent
|
||||||
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
|
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
|
||||||
$STD unzip Agent_Linux64*.zip
|
$STD unzip Agent_Linux64*.zip
|
||||||
rm -rf Agent_Linux64*.zip
|
|
||||||
chmod +x ./Agent
|
chmod +x ./Agent
|
||||||
msg_ok "Installed AgentDVR"
|
msg_ok "Installed AgentDVR"
|
||||||
|
|
||||||
@@ -54,6 +54,7 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
rm -rf Agent_Linux64*.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"
|
||||||
|
|||||||
@@ -67,5 +67,14 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
|||||||
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
|
||||||
|
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
|
msg_info "Exposing Docker TCP socket"
|
||||||
|
$STD mkdir -p /etc/docker
|
||||||
|
$STD echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' > /etc/docker/daemon.json
|
||||||
|
$STD rc-service docker restart
|
||||||
|
msg_ok "Exposed Docker TCP socket at tcp://+:2375"
|
||||||
|
fi
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -28,8 +28,7 @@ msg_ok "Enabled Docker Service"
|
|||||||
|
|
||||||
echo "${TAB3}Choose the database for Komodo installation:"
|
echo "${TAB3}Choose the database for Komodo installation:"
|
||||||
echo "${TAB3}1) MongoDB (recommended)"
|
echo "${TAB3}1) MongoDB (recommended)"
|
||||||
echo "${TAB3}2) SQLite"
|
echo "${TAB3}2) FerretDB"
|
||||||
echo "${TAB3}3) PostgreSQL"
|
|
||||||
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
||||||
DB_CHOICE=${DB_CHOICE:-1}
|
DB_CHOICE=${DB_CHOICE:-1}
|
||||||
|
|
||||||
@@ -38,10 +37,7 @@ case $DB_CHOICE in
|
|||||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
DB_COMPOSE_FILE="sqlite.compose.yaml"
|
DB_COMPOSE_FILE="ferretdb.compose.yaml"
|
||||||
;;
|
|
||||||
3)
|
|
||||||
DB_COMPOSE_FILE="postgres.compose.yaml"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid choice. Defaulting to MongoDB."
|
echo "Invalid choice. Defaulting to MongoDB."
|
||||||
|
|||||||
@@ -24,13 +24,13 @@ RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/la
|
|||||||
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
||||||
chmod +x /opt/tinyauth/tinyauth
|
chmod +x /opt/tinyauth/tinyauth
|
||||||
|
|
||||||
PASSWORD=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8)
|
PASS=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8)
|
||||||
USER=$(htpasswd -Bbn "tinyauth" "${PASSWORD}")
|
USER=$(htpasswd -Bbn "tinyauth" "${PASS}")
|
||||||
|
|
||||||
cat <<EOF > /opt/tinyauth/credentials.txt
|
cat <<EOF >/opt/tinyauth/credentials.txt
|
||||||
Tinyauth Credentials
|
Tinyauth Credentials
|
||||||
Username: tinyauth
|
Username: tinyauth
|
||||||
Password: ${PASSWORD}
|
Password: ${PASS}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/tinyauth_version.txt
|
echo "${RELEASE}" >/opt/tinyauth_version.txt
|
||||||
|
|||||||
@@ -13,13 +13,9 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Authelia"
|
fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb" -o "authelia_${RELEASE}_amd64.deb"
|
|
||||||
$STD dpkg -i "authelia_${RELEASE}_amd64.deb"
|
|
||||||
msg_ok "Install Authelia completed"
|
|
||||||
|
|
||||||
read -p "${TAB3}Enter your domain (ex. example.com): " DOMAIN
|
read -rp "${TAB3}Enter your domain (ex. example.com): " DOMAIN
|
||||||
|
|
||||||
msg_info "Setting Authelia up"
|
msg_info "Setting Authelia up"
|
||||||
touch /etc/authelia/emails.txt
|
touch /etc/authelia/emails.txt
|
||||||
@@ -72,7 +68,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f "authelia_${RELEASE}_amd64.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"
|
||||||
|
|||||||
@@ -24,13 +24,10 @@ $STD apt-get install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_uv
|
setup_uv
|
||||||
|
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
|
||||||
|
|
||||||
msg_info "Installing Babybuddy"
|
msg_info "Installing Babybuddy"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
mkdir -p /opt/data
|
||||||
temp_file=$(mktemp)
|
|
||||||
mkdir -p /opt/{babybuddy,data}
|
|
||||||
curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
|
|
||||||
cd /opt/babybuddy
|
cd /opt/babybuddy
|
||||||
$STD uv venv .venv
|
$STD uv venv .venv
|
||||||
$STD source .venv/bin/activate
|
$STD source .venv/bin/activate
|
||||||
@@ -102,7 +99,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"
|
||||||
|
|||||||
@@ -13,14 +13,9 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
apache2 \
|
|
||||||
libapache2-mod-php \
|
|
||||||
php-{pgsql,dom}
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
|
PHP_APACHE="YES" PHP_MODULE="pgsql" PHP_VERSION="8.2" setup_php
|
||||||
|
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL Database"
|
msg_info "Setting up PostgreSQL Database"
|
||||||
DB_NAME=baikal
|
DB_NAME=baikal
|
||||||
@@ -36,11 +31,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
|
|||||||
} >>~/baikal.creds
|
} >>~/baikal.creds
|
||||||
msg_ok "Set up PostgreSQL Database"
|
msg_ok "Set up PostgreSQL Database"
|
||||||
|
|
||||||
msg_info "Installing Baikal"
|
msg_info "Configuring Baikal"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" -o "baikal-${RELEASE}.zip"
|
|
||||||
$STD unzip "baikal-${RELEASE}.zip"
|
|
||||||
cat <<EOF >/opt/baikal/config/baikal.yaml
|
cat <<EOF >/opt/baikal/config/baikal.yaml
|
||||||
database:
|
database:
|
||||||
backend: pgsql
|
backend: pgsql
|
||||||
@@ -51,7 +42,6 @@ database:
|
|||||||
EOF
|
EOF
|
||||||
chown -R www-data:www-data /opt/baikal/
|
chown -R www-data:www-data /opt/baikal/
|
||||||
chmod -R 755 /opt/baikal/
|
chmod -R 755 /opt/baikal/
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed Baikal"
|
msg_ok "Installed Baikal"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -90,7 +80,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/baikal-${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"
|
||||||
|
|||||||
@@ -14,22 +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 redis
|
||||||
apache2 \
|
|
||||||
redis \
|
|
||||||
php-{curl,date,json,mbstring,redis,sqlite3,sockets} \
|
|
||||||
libapache2-mod-php
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing barcodebuddy"
|
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="redis, sqlite3" setup_php
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
msg_info "Configuring barcodebuddy"
|
||||||
$STD unzip "v${RELEASE}.zip"
|
|
||||||
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
|
|
||||||
chown -R www-data:www-data /opt/barcodebuddy/data
|
chown -R www-data:www-data /opt/barcodebuddy/data
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
msg_ok "Configured barcodebuddy"
|
||||||
msg_ok "Installed barcodebuddy"
|
|
||||||
|
|
||||||
msg_info "Creating Services"
|
msg_info "Creating Services"
|
||||||
cat <<EOF >/etc/systemd/system/barcodebuddy.service
|
cat <<EOF >/etc/systemd/system/barcodebuddy.service
|
||||||
@@ -73,7 +66,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/v${RELEASE}.zip"
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -22,17 +22,10 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
setup_go
|
setup_go
|
||||||
|
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
msg_info "Installing bitmagnet v${RELEASE}"
|
msg_info "Setting up database"
|
||||||
mkdir -p /opt/bitmagnet
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
|
||||||
cd /opt/bitmagnet
|
|
||||||
VREL=v$RELEASE
|
|
||||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
|
||||||
chmod +x bitmagnet
|
|
||||||
POSTGRES_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
POSTGRES_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
$STD sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '$POSTGRES_PASSWORD';"
|
$STD sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '$POSTGRES_PASSWORD';"
|
||||||
$STD sudo -u postgres psql -c "CREATE DATABASE bitmagnet;"
|
$STD sudo -u postgres psql -c "CREATE DATABASE bitmagnet;"
|
||||||
@@ -41,8 +34,14 @@ $STD sudo -u postgres psql -c "CREATE DATABASE bitmagnet;"
|
|||||||
echo ""
|
echo ""
|
||||||
echo "postgres user password: $POSTGRES_PASSWORD"
|
echo "postgres user password: $POSTGRES_PASSWORD"
|
||||||
} >>~/postgres.creds
|
} >>~/postgres.creds
|
||||||
echo "${RELEASE}" >/opt/bitmagnet_version.txt
|
msg_ok "Database set up"
|
||||||
msg_ok "Installed bitmagnet v${RELEASE}"
|
|
||||||
|
msg_info "Configuring bitmagnet v${RELEASE}"
|
||||||
|
cd /opt/bitmagnet
|
||||||
|
VREL=v$RELEASE
|
||||||
|
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||||
|
chmod +x bitmagnet
|
||||||
|
msg_ok "Configured bitmagnet v${RELEASE}"
|
||||||
|
|
||||||
read -r -p "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey
|
read -r -p "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey
|
||||||
|
|
||||||
@@ -72,7 +71,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"
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ update_os
|
|||||||
msg_info "Installing Dependencies (Patience)"
|
msg_info "Installing Dependencies (Patience)"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
apache2 \
|
apache2 \
|
||||||
php8.2-{mbstring,gd,fpm,curl,intl,ldap,tidy,bz2,mysql,zip,xml} \
|
|
||||||
composer \
|
|
||||||
libapache2-mod-php \
|
|
||||||
make
|
make
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
|
||||||
|
|
||||||
|
setup_composer
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
|
|
||||||
msg_info "Setting up Database"
|
msg_info "Setting up Database"
|
||||||
@@ -39,13 +39,10 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
|
|||||||
} >>~/bookstack.creds
|
} >>~/bookstack.creds
|
||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Setup Bookstack (Patience)"
|
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
|
||||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
msg_info "Configuring Bookstack (Patience)"
|
||||||
curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
|
||||||
$STD unzip v${RELEASE}.zip
|
|
||||||
mv BookStack-${RELEASE} /opt/bookstack
|
|
||||||
cd /opt/bookstack
|
cd /opt/bookstack
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
sudo sed -i "s|APP_URL=.*|APP_URL=http://$LOCAL_IP|g" /opt/bookstack/.env
|
sudo sed -i "s|APP_URL=.*|APP_URL=http://$LOCAL_IP|g" /opt/bookstack/.env
|
||||||
@@ -60,9 +57,8 @@ chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public
|
|||||||
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
||||||
chmod -R 640 /opt/bookstack/.env
|
chmod -R 640 /opt/bookstack/.env
|
||||||
$STD a2enmod rewrite
|
$STD a2enmod rewrite
|
||||||
$STD a2enmod php8.2
|
$STD a2enmod php8.3
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
msg_ok "Configured Bookstack"
|
||||||
msg_ok "Installed Bookstack"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/apache2/sites-available/bookstack.conf
|
cat <<EOF >/etc/apache2/sites-available/bookstack.conf
|
||||||
@@ -111,7 +107,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
$STD apt-get autoremove
|
$STD apt-get autoremove
|
||||||
$STD apt-get autoclean
|
$STD apt-get autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -18,19 +18,12 @@ $STD apt-get install -y apt-transport-https
|
|||||||
$STD apt-get install -y lsb-release
|
$STD apt-get install -y lsb-release
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Nginx"
|
|
||||||
curl -fsSL "https://nginx.org/keys/nginx_signing.key" | gpg --dearmor >/usr/share/keyrings/nginx-archive-keyring.gpg
|
|
||||||
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian $(lsb_release -cs) nginx" >/etc/apt/sources.list.d/nginx.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nginx=1.26.3*
|
|
||||||
msg_ok "Installed Nginx"
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Installing BunkerWeb v${RELEASE} (Patience)"
|
msg_info "Installing BunkerWeb v${RELEASE} (Patience)"
|
||||||
curl -fsSL "https://repo.bunkerweb.io/bunkerity/bunkerweb/gpgkey" | gpg --dearmor >/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg
|
curl -fsSL -o install-bunkerweb.sh https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg] https://repo.bunkerweb.io/bunkerity/bunkerweb/debian/ bookworm main" >/etc/apt/sources.list.d/bunkerity_bunkerweb.list
|
chmod +x install-bunkerweb.sh
|
||||||
$STD apt-get update
|
$STD ./install-bunkerweb.sh --yes
|
||||||
$STD apt-get install -y bunkerweb=${RELEASE}
|
$STD apt-mark unhold bunkerweb nginx
|
||||||
cat <<EOF >/etc/apt/preferences.d/bunkerweb
|
cat <<EOF >/etc/apt/preferences.d/bunkerweb
|
||||||
Package: bunkerweb
|
Package: bunkerweb
|
||||||
Pin: version ${RELEASE}
|
Pin: version ${RELEASE}
|
||||||
|
|||||||
@@ -14,22 +14,17 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
|
||||||
|
|
||||||
msg_info "Installing ByteStash"
|
msg_info "Installing ByteStash"
|
||||||
JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=')
|
JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=')
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf $temp_file
|
|
||||||
mv ByteStash-${RELEASE} /opt/bytestash
|
|
||||||
cd /opt/bytestash/server
|
cd /opt/bytestash/server
|
||||||
$STD npm install
|
$STD npm install
|
||||||
cd /opt/bytestash/client
|
cd /opt/bytestash/client
|
||||||
$STD npm install
|
$STD npm install
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed ByteStash"
|
msg_ok "Installed ByteStash"
|
||||||
|
|
||||||
read -p "${TAB3}Do you want to allow registration of multiple accounts? [y/n]: " allowreg
|
read -rp "${TAB3}Do you want to allow registration of multiple accounts? [y/n]: " allowreg
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/bytestash-backend.service
|
cat <<EOF >/etc/systemd/system/bytestash-backend.service
|
||||||
@@ -73,7 +68,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"
|
||||||
|
|||||||
@@ -15,16 +15,15 @@ update_os
|
|||||||
|
|
||||||
setup_go
|
setup_go
|
||||||
|
|
||||||
msg_info "Configure Application"
|
|
||||||
var_cf_api_token="default"
|
var_cf_api_token="default"
|
||||||
read -rp "Enter the Cloudflare API token: " var_cf_api_token
|
read -rp "${TAB3}Enter the Cloudflare API token: " var_cf_api_token
|
||||||
|
|
||||||
var_cf_domains="default"
|
var_cf_domains="default"
|
||||||
read -rp "Enter the domains separated with a comma (*.example.org,www.example.org) " var_cf_domains
|
read -rp "${TAB3}Enter the domains separated with a comma (*.example.org,www.example.org) " var_cf_domains
|
||||||
|
|
||||||
var_cf_proxied="false"
|
var_cf_proxied="false"
|
||||||
while true; do
|
while true; do
|
||||||
read -rp "Proxied? (y/n): " answer
|
read -rp "${TAB3}Proxied? (y/n): " answer
|
||||||
case "$answer" in
|
case "$answer" in
|
||||||
[Yy]*)
|
[Yy]*)
|
||||||
var_cf_proxied="true"
|
var_cf_proxied="true"
|
||||||
@@ -39,7 +38,7 @@ while true; do
|
|||||||
done
|
done
|
||||||
var_cf_ip6_provider="none"
|
var_cf_ip6_provider="none"
|
||||||
while true; do
|
while true; do
|
||||||
read -rp "Enable IPv6 support? (y/n): " answer
|
read -rp "${TAB3}Enable IPv6 support? (y/n): " answer
|
||||||
case "$answer" in
|
case "$answer" in
|
||||||
[Yy]*)
|
[Yy]*)
|
||||||
var_cf_ip6_provider="auto"
|
var_cf_ip6_provider="auto"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -14,20 +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 git
|
||||||
git
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
read -p "${TAB3}Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice
|
read -rp "${TAB3}Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice
|
||||||
|
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
|
||||||
|
|
||||||
msg_info "Setup ${APPLICATION}"
|
msg_info "Setup ${APPLICATION}"
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL "https://github.com/cryptpad/cryptpad/archive/refs/tags/${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf $temp_file
|
|
||||||
mv cryptpad-$RELEASE /opt/cryptpad
|
|
||||||
cd /opt/cryptpad
|
cd /opt/cryptpad
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run install:components
|
$STD npm run install:components
|
||||||
@@ -39,7 +34,6 @@ sed -i "80s#//httpAddress: 'localhost'#httpAddress: '0.0.0.0'#g" /opt/cryptpad/c
|
|||||||
if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then
|
if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then
|
||||||
$STD bash -c "./install-onlyoffice.sh --accept-license"
|
$STD bash -c "./install-onlyoffice.sh --accept-license"
|
||||||
fi
|
fi
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Setup ${APPLICATION}"
|
msg_ok "Setup ${APPLICATION}"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -69,7 +63,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,15 +14,12 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
msg_info "Installing Dashy ${RELEASE} (Patience)"
|
msg_info "Installing Dashy ${RELEASE} (Patience)"
|
||||||
mkdir -p /opt/dashy
|
|
||||||
curl -fsSL "https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz -C /opt/dashy --strip-components=1
|
|
||||||
cd /opt/dashy
|
cd /opt/dashy
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed Dashy ${RELEASE}"
|
msg_ok "Installed Dashy ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -29,7 +29,17 @@ echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
|
|||||||
$STD sh <(curl -fsSL https://get.docker.com)
|
$STD sh <(curl -fsSL https://get.docker.com)
|
||||||
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
read -r -p "${TAB3}Install Docker Compose v2 plugin? <y/N> " prompt_compose
|
||||||
|
if [[ ${prompt_compose,,} =~ ^(y|yes)$ ]]; then
|
||||||
|
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
|
mkdir -p /usr/local/lib/docker/cli-plugins
|
||||||
|
curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
|
||||||
|
-o /usr/local/lib/docker/cli-plugins/docker-compose
|
||||||
|
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
||||||
|
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Would you like to add Portainer (UI)? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||||
docker volume create portainer_data >/dev/null
|
docker volume create portainer_data >/dev/null
|
||||||
@@ -43,9 +53,9 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|||||||
portainer/portainer-ce:latest
|
portainer/portainer-ce:latest
|
||||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
||||||
else
|
else
|
||||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
$STD docker run -d \
|
$STD docker run -d \
|
||||||
-p 9001:9001 \
|
-p 9001:9001 \
|
||||||
--name portainer_agent \
|
--name portainer_agent \
|
||||||
@@ -57,6 +67,44 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice
|
||||||
|
case "${socket_choice,,}" in
|
||||||
|
l)
|
||||||
|
socket="tcp://127.0.0.1:2375"
|
||||||
|
;;
|
||||||
|
a)
|
||||||
|
socket="tcp://0.0.0.0:2375"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
socket=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ -n "$socket" ]]; then
|
||||||
|
msg_info "Enabling Docker TCP socket on $socket"
|
||||||
|
$STD apt-get install -y jq
|
||||||
|
|
||||||
|
tmpfile=$(mktemp)
|
||||||
|
jq --arg sock "$socket" '. + { "hosts": ["unix:///var/run/docker.sock", $sock] }' /etc/docker/daemon.json > "$tmpfile" && mv "$tmpfile" /etc/docker/daemon.json
|
||||||
|
|
||||||
|
mkdir -p /etc/systemd/system/docker.service.d
|
||||||
|
cat <<EOF > /etc/systemd/system/docker.service.d/override.conf
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=/usr/bin/dockerd
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$STD systemctl daemon-reexec
|
||||||
|
$STD systemctl daemon-reload
|
||||||
|
|
||||||
|
if systemctl restart docker; then
|
||||||
|
msg_ok "Docker TCP socket available on $socket"
|
||||||
|
else
|
||||||
|
msg_error "Docker failed to restart. Check journalctl -xeu docker.service"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
|
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL"
|
msg_info "Setting up PostgreSQL"
|
||||||
DB_NAME="docmost_db"
|
DB_NAME="docmost_db"
|
||||||
@@ -40,12 +41,7 @@ $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
|||||||
} >>~/docmost.creds
|
} >>~/docmost.creds
|
||||||
msg_ok "Set up PostgreSQL"
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Installing Docmost (Patience)"
|
msg_info "Configuring Docmost (Patience)"
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
|
|
||||||
tar -xzf "$temp_file"
|
|
||||||
mv docmost-${RELEASE} /opt/docmost
|
|
||||||
cd /opt/docmost
|
cd /opt/docmost
|
||||||
mv .env.example .env
|
mv .env.example .env
|
||||||
mkdir data
|
mkdir data
|
||||||
@@ -56,8 +52,7 @@ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z
|
|||||||
export NODE_OPTIONS="--max-old-space-size=2048"
|
export NODE_OPTIONS="--max-old-space-size=2048"
|
||||||
$STD pnpm install
|
$STD pnpm install
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
msg_ok "Configured Docmost"
|
||||||
msg_ok "Installed Docmost"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/docmost.service
|
cat <<EOF >/etc/systemd/system/docmost.service
|
||||||
@@ -81,7 +76,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"
|
||||||
|
|||||||
@@ -24,17 +24,15 @@ if [[ "$CTTYPE" == "0" ]]; then
|
|||||||
fi
|
fi
|
||||||
msg_ok "Set Up Hardware Acceleration"
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
||||||
|
|
||||||
msg_info "Installing Emby"
|
msg_info "Configuring Emby"
|
||||||
curl -fsSL "https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb" -o "emby-server-deb_${LATEST}_amd64.deb"
|
|
||||||
$STD dpkg -i emby-server-deb_${LATEST}_amd64.deb
|
|
||||||
if [[ "$CTTYPE" == "0" ]]; then
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:root,emby/' -e 's/^render:x:108:root,emby$/ssl-cert:x:108:/' /etc/group
|
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:root,emby/' -e 's/^render:x:108:root,emby$/ssl-cert:x:108:/' /etc/group
|
||||||
else
|
else
|
||||||
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:emby/' -e 's/^render:x:108:emby$/ssl-cert:x:108:/' /etc/group
|
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:emby/' -e 's/^render:x:108:emby$/ssl-cert:x:108:/' /etc/group
|
||||||
fi
|
fi
|
||||||
msg_ok "Installed Emby"
|
msg_ok "Configured Emby"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
@@ -42,5 +40,4 @@ customize
|
|||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
rm emby-server-deb_${LATEST}_amd64.deb
|
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -13,16 +13,39 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing dependencies"
|
||||||
|
$STD apt-get install -y ca-certificates
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
|
msg_info "Fetching latest EMQX Enterprise version"
|
||||||
|
LATEST_VERSION=$(curl -fsSL https://www.emqx.com/en/downloads/enterprise | grep -oP '/en/downloads/enterprise/v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)
|
||||||
|
if [[ -z "$LATEST_VERSION" ]]; then
|
||||||
|
msg_error "Failed to determine latest EMQX version"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
msg_ok "Latest version: v$LATEST_VERSION"
|
||||||
|
|
||||||
|
DOWNLOAD_URL="https://www.emqx.com/en/downloads/enterprise/v$LATEST_VERSION/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb"
|
||||||
|
DEB_FILE="/tmp/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb"
|
||||||
|
|
||||||
|
msg_info "Downloading EMQX v$LATEST_VERSION"
|
||||||
|
$STD curl -fsSL -o "$DEB_FILE" "$DOWNLOAD_URL"
|
||||||
|
msg_ok "Downloaded EMQX"
|
||||||
|
|
||||||
msg_info "Installing EMQX"
|
msg_info "Installing EMQX"
|
||||||
$STD bash <(curl -fsSL https://packagecloud.io/install/repositories/emqx/emqx/script.deb.sh)
|
$STD apt-get install -y "$DEB_FILE"
|
||||||
$STD apt-get install -y emqx
|
echo "$LATEST_VERSION" >~/.emqx
|
||||||
$STD systemctl enable --now emqx
|
|
||||||
msg_ok "Installed EMQX"
|
msg_ok "Installed EMQX"
|
||||||
|
|
||||||
|
msg_info "Starting EMQX service"
|
||||||
|
$STD systemctl enable -q --now emqx
|
||||||
|
msg_ok "Enabled EMQX service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
apt-get autoremove >/dev/null
|
rm -f "$DEB_FILE"
|
||||||
apt-get autoclean >/dev/null
|
$STD apt-get autoremove
|
||||||
|
$STD apt-get autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -13,15 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing FFmpeg (Patience)"
|
FFMPEG_VERSION="latest" FFMPEG_TYPE="medium" setup_ffmpeg
|
||||||
cd /usr/local/bin
|
|
||||||
curl -fsSL "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz" -o "ffmpeg-release-amd64-static.tar.xz"
|
|
||||||
$STD tar -xvf ffmpeg-release-amd64-static.tar.xz
|
|
||||||
rm -f ffmpeg-*.tar.xz
|
|
||||||
cd ffmpeg-*
|
|
||||||
mv ffmpeg ffprobe /usr/local/bin/
|
|
||||||
rm -rf /usr/local/bin/ffmpeg-*
|
|
||||||
msg_ok "Installed FFmpeg"
|
|
||||||
|
|
||||||
msg_info "Setting Up Hardware Acceleration"
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
@@ -34,15 +26,7 @@ if [[ "$CTTYPE" == "0" ]]; then
|
|||||||
fi
|
fi
|
||||||
msg_ok "Set Up Hardware Acceleration"
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_info "Installing ErsatzTV"
|
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
|
||||||
temp_file=$(mktemp)
|
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
|
||||||
curl -fsSL "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" -o "$temp_file"
|
|
||||||
tar -xzf "$temp_file"
|
|
||||||
mv /opt/ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed ErsatzTV"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/ersatzTV.service
|
cat <<EOF >/etc/systemd/system/ersatzTV.service
|
||||||
@@ -68,7 +52,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"
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ $STD /opt/esphome/.venv/bin/python -m pip install --upgrade pip
|
|||||||
$STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool
|
$STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool
|
||||||
msg_ok "Setup and Installed ESPHome"
|
msg_ok "Setup and Installed ESPHome"
|
||||||
|
|
||||||
|
msg_info "Linking esphome to /usr/local/bin"
|
||||||
|
rm -f /usr/local/bin/esphome
|
||||||
|
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
|
||||||
|
msg_ok "Linked esphome binary"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
mkdir -p /root/config
|
mkdir -p /root/config
|
||||||
cat <<EOF >/etc/systemd/system/esphomeDashboard.service
|
cat <<EOF >/etc/systemd/system/esphomeDashboard.service
|
||||||
|
|||||||
@@ -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,14 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
|
$STD apt-get install -y apache2
|
||||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y \
|
|
||||||
apache2 \
|
|
||||||
libapache2-mod-php8.4 \
|
|
||||||
php8.4-{bcmath,cli,intl,curl,zip,gd,xml,mbstring,mysql} \
|
|
||||||
composer
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="mysql" setup_php
|
||||||
|
setup_composer
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
|
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii"
|
||||||
|
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
msg_info "Setting up database"
|
msg_info "Setting up database"
|
||||||
DB_NAME=firefly
|
DB_NAME=firefly
|
||||||
@@ -41,13 +38,7 @@ mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRI
|
|||||||
} >>~/firefly.creds
|
} >>~/firefly.creds
|
||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Installing Firefly III (Patience)"
|
msg_info "Configuring Firefly III (Patience)"
|
||||||
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o "FireflyIII-v${RELEASE}.tar.gz"
|
|
||||||
mkdir -p /opt/firefly
|
|
||||||
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly
|
|
||||||
chown -R www-data:www-data /opt/firefly
|
chown -R www-data:www-data /opt/firefly
|
||||||
chmod -R 775 /opt/firefly/storage
|
chmod -R 775 /opt/firefly/storage
|
||||||
cd /opt/firefly
|
cd /opt/firefly
|
||||||
@@ -69,8 +60,7 @@ tar -xzf "DataImporter-v${IMPORTER_RELEASE}.tar.gz" -C /opt/firefly/dataimporter
|
|||||||
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
|
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
|
||||||
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
|
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
|
||||||
chown -R www-data:www-data /opt/firefly
|
chown -R www-data:www-data /opt/firefly
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
msg_ok "Configured Firefly III"
|
||||||
msg_ok "Installed Firefly III"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/apache2/sites-available/firefly.conf
|
cat <<EOF >/etc/apache2/sites-available/firefly.conf
|
||||||
@@ -112,7 +102,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/FireflyIII-v${RELEASE}.tar.gz"
|
|
||||||
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
|
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y apt-transport-https
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y xvfb
|
apt-transport-https \
|
||||||
|
xvfb
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Chrome"
|
msg_info "Installing Chrome"
|
||||||
@@ -26,13 +27,7 @@ $STD apt update
|
|||||||
$STD apt install -y google-chrome-stable
|
$STD apt install -y google-chrome-stable
|
||||||
msg_ok "Installed Chrome"
|
msg_ok "Installed Chrome"
|
||||||
|
|
||||||
msg_info "Installing FlareSolverr"
|
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||||
RELEASE=$(curl -fsSL https://github.com/FlareSolverr/FlareSolverr/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
|
||||||
$STD curl -fsSL "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz" -o "flaresolverr_linux_x64.tar.gz"
|
|
||||||
$STD tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
|
|
||||||
$STD rm flaresolverr_linux_x64.tar.gz
|
|
||||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
|
|
||||||
msg_ok "Installed FlareSolverr"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/flaresolverr.service
|
cat <<EOF >/etc/systemd/system/flaresolverr.service
|
||||||
|
|||||||
@@ -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="curl,xml,mbstring,intl,zip,pgsql,gmp" 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
|
|
||||||
|
|||||||
@@ -16,19 +16,19 @@ update_os
|
|||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
nginx \
|
nginx \
|
||||||
ca-certificates
|
ca-certificates \
|
||||||
|
libjemalloc2
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_mariadb
|
setup_mysql
|
||||||
|
|
||||||
msg_info "Configuring Database"
|
msg_info "Configuring Database"
|
||||||
DB_NAME=ghost
|
DB_NAME=ghost
|
||||||
DB_USER=ghostuser
|
DB_USER=ghostuser
|
||||||
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)
|
||||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "Ghost-Credentials"
|
echo "Ghost-Credentials"
|
||||||
echo "Ghost Database User: $DB_USER"
|
echo "Ghost Database User: $DB_USER"
|
||||||
@@ -37,7 +37,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
|
|||||||
} >>~/ghost.creds
|
} >>~/ghost.creds
|
||||||
msg_ok "Configured MySQL"
|
msg_ok "Configured MySQL"
|
||||||
|
|
||||||
NODE_VERSION="20" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
msg_info "Installing Ghost CLI"
|
msg_info "Installing Ghost CLI"
|
||||||
$STD npm install ghost-cli@latest -g
|
$STD npm install ghost-cli@latest -g
|
||||||
|
|||||||
@@ -19,10 +19,9 @@ $STD apt-get install -y git
|
|||||||
$STD apt-get install -y sqlite3
|
$STD apt-get install -y sqlite3
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Gitea"
|
fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
|
||||||
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
|
||||||
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o "gitea-$RELEASE-linux-amd64"
|
msg_info "Configuring Gitea"
|
||||||
mv gitea* /usr/local/bin/gitea
|
|
||||||
chmod +x /usr/local/bin/gitea
|
chmod +x /usr/local/bin/gitea
|
||||||
adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea >/dev/null
|
adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea >/dev/null
|
||||||
mkdir -p /var/lib/gitea/{custom,data,log}
|
mkdir -p /var/lib/gitea/{custom,data,log}
|
||||||
@@ -31,7 +30,7 @@ chmod -R 750 /var/lib/gitea/
|
|||||||
chown root:gitea /etc/gitea
|
chown root:gitea /etc/gitea
|
||||||
chmod 770 /etc/gitea
|
chmod 770 /etc/gitea
|
||||||
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
|
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
|
||||||
msg_ok "Installed Gitea"
|
msg_ok "Configured Gitea"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/gitea.service
|
cat <<EOF >/etc/systemd/system/gitea.service
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: CrazyWolf13
|
# Author: CrazyWolf13
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/arunavo4/gitea-mirror
|
# Source: https://github.com/RayLabsHQ/gitea-mirror
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
@@ -28,7 +28,7 @@ ln -sf /opt/bun/bin/bun /usr/local/bin/bun
|
|||||||
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
|
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
|
||||||
msg_ok "Installed Bun"
|
msg_ok "Installed Bun"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "gitea-mirror" "arunavo4/gitea-mirror"
|
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
|
||||||
|
|
||||||
msg_info "Installing gitea-mirror"
|
msg_info "Installing gitea-mirror"
|
||||||
cd /opt/gitea-mirror
|
cd /opt/gitea-mirror
|
||||||
|
|||||||
@@ -13,12 +13,9 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Glance"
|
fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-amd64.tar.gz"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
cd /opt
|
msg_info "Configuring Glance"
|
||||||
curl -fsSL "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz" -o "glance-linux-amd64.tar.gz"
|
|
||||||
mkdir -p /opt/glance
|
|
||||||
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
|
|
||||||
cat <<EOF >/opt/glance/glance.yml
|
cat <<EOF >/opt/glance/glance.yml
|
||||||
pages:
|
pages:
|
||||||
- name: Startpage
|
- name: Startpage
|
||||||
@@ -39,9 +36,7 @@ pages:
|
|||||||
- title: Helper Scripts
|
- title: Helper Scripts
|
||||||
url: https://github.com/community-scripts/ProxmoxVE
|
url: https://github.com/community-scripts/ProxmoxVE
|
||||||
EOF
|
EOF
|
||||||
|
msg_ok "Configured Glance"
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Glance"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
service_path="/etc/systemd/system/glance.service"
|
service_path="/etc/systemd/system/glance.service"
|
||||||
@@ -67,7 +62,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/glance-linux-amd64.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"
|
||||||
|
|||||||
@@ -22,18 +22,16 @@ curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1
|
|||||||
$STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
|
$STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="20" setup_nodejs
|
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
|
||||||
|
|
||||||
msg_info "Setup ${APPLICATION}"
|
msg_info "Setup ${APPLICATION}"
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/HabitRPG/habitica/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf $temp_file
|
|
||||||
mv habitica-${RELEASE}/ /opt/habitica
|
|
||||||
cd /opt/habitica
|
cd /opt/habitica
|
||||||
$STD npm i
|
$STD npm i
|
||||||
|
$STD npm run postinstall
|
||||||
|
$STD npm run client:build
|
||||||
|
$STD gulp build:prod
|
||||||
cp config.json.example config.json
|
cp config.json.example config.json
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Setup ${APPLICATION}"
|
msg_ok "Setup ${APPLICATION}"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -91,7 +89,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"
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ $STD apt-get install --no-install-recommends -y \
|
|||||||
mesa-vulkan-drivers \
|
mesa-vulkan-drivers \
|
||||||
ocl-icd-libopencl1 \
|
ocl-icd-libopencl1 \
|
||||||
tini \
|
tini \
|
||||||
|
libaom-dev \
|
||||||
zlib1g
|
zlib1g
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
libgdk-pixbuf-2.0-dev librsvg2-dev libtool
|
libgdk-pixbuf-2.0-dev librsvg2-dev libtool
|
||||||
@@ -93,7 +94,7 @@ if [[ "$CTTYPE" == "0" ]]; then
|
|||||||
fi
|
fi
|
||||||
msg_ok "Dependencies Installed"
|
msg_ok "Dependencies Installed"
|
||||||
|
|
||||||
read -r -p "Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt
|
read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing OpenVINO dependencies"
|
msg_info "Installing OpenVINO dependencies"
|
||||||
touch ~/.openvino
|
touch ~/.openvino
|
||||||
@@ -153,7 +154,6 @@ if [[ -f ~/.openvino ]]; then
|
|||||||
fi
|
fi
|
||||||
msg_ok "Packages from Testing Repo Installed"
|
msg_ok "Packages from Testing Repo Installed"
|
||||||
|
|
||||||
# Fix default DB collation issue after libc update
|
|
||||||
$STD sudo -u postgres psql -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;"
|
$STD sudo -u postgres psql -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;"
|
||||||
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME REFRESH COLLATION VERSION;"
|
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME REFRESH COLLATION VERSION;"
|
||||||
|
|
||||||
@@ -218,7 +218,7 @@ $STD cmake --preset=release-noplugins \
|
|||||||
-DWITH_LIBSHARPYUV=ON \
|
-DWITH_LIBSHARPYUV=ON \
|
||||||
-DWITH_LIBDE265=ON \
|
-DWITH_LIBDE265=ON \
|
||||||
-DWITH_AOM_DECODER=OFF \
|
-DWITH_AOM_DECODER=OFF \
|
||||||
-DWITH_AOM_ENCODER=OFF \
|
-DWITH_AOM_ENCODER=ON \
|
||||||
-DWITH_X265=OFF \
|
-DWITH_X265=OFF \
|
||||||
-DWITH_EXAMPLES=OFF \
|
-DWITH_EXAMPLES=OFF \
|
||||||
..
|
..
|
||||||
@@ -254,7 +254,8 @@ $STD make clean
|
|||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
|
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
|
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
|
||||||
|
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
|
||||||
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
||||||
cd "$SOURCE"
|
cd "$SOURCE"
|
||||||
$STD git reset --hard "$LIBVIPS_REVISION"
|
$STD git reset --hard "$LIBVIPS_REVISION"
|
||||||
@@ -301,6 +302,10 @@ cd "$SRC_DIR"
|
|||||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
|
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
|
cd "$APP_DIR"
|
||||||
|
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||||
|
$STD npm install sharp
|
||||||
|
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
||||||
msg_ok "Installed Immich Web Components"
|
msg_ok "Installed Immich Web Components"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
@@ -331,8 +336,6 @@ ln -s "$UPLOAD_DIR" "$APP_DIR"/upload
|
|||||||
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
|
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
|
||||||
|
|
||||||
msg_info "Installing Immich CLI"
|
msg_info "Installing Immich CLI"
|
||||||
$STD npm install --build-from-source sharp
|
|
||||||
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
|
||||||
$STD npm i -g @immich/cli
|
$STD npm i -g @immich/cli
|
||||||
msg_ok "Installed Immich CLI"
|
msg_ok "Installed Immich CLI"
|
||||||
|
|
||||||
|
|||||||
@@ -39,8 +39,7 @@ msg_ok "Installed Docker"
|
|||||||
|
|
||||||
echo "${TAB3}Choose the database for Komodo installation:"
|
echo "${TAB3}Choose the database for Komodo installation:"
|
||||||
echo "${TAB3}1) MongoDB (recommended)"
|
echo "${TAB3}1) MongoDB (recommended)"
|
||||||
echo "${TAB3}2) SQLite"
|
echo "${TAB3}2) FerretDB"
|
||||||
echo "${TAB3}3) PostgreSQL"
|
|
||||||
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
||||||
DB_CHOICE=${DB_CHOICE:-1}
|
DB_CHOICE=${DB_CHOICE:-1}
|
||||||
|
|
||||||
@@ -49,10 +48,7 @@ case $DB_CHOICE in
|
|||||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
DB_COMPOSE_FILE="sqlite.compose.yaml"
|
DB_COMPOSE_FILE="ferretdb.compose.yaml"
|
||||||
;;
|
|
||||||
3)
|
|
||||||
DB_COMPOSE_FILE="postgres.compose.yaml"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid choice. Defaulting to MongoDB."
|
echo "Invalid choice. Defaulting to MongoDB."
|
||||||
|
|||||||
@@ -14,22 +14,17 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y make
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y g++
|
ca-certificates \
|
||||||
$STD apt-get install -y gcc
|
build-essential
|
||||||
$STD apt-get install -y ca-certificates
|
|
||||||
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 "mafl" "hywax/mafl"
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
msg_info "Installing Mafl v${RELEASE}"
|
msg_info "Installing Mafl v${RELEASE}"
|
||||||
curl -fsSL "https://github.com/hywax/mafl/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
|
|
||||||
tar -xzf v${RELEASE}.tar.gz
|
|
||||||
mkdir -p /opt/mafl/data
|
mkdir -p /opt/mafl/data
|
||||||
curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml"
|
curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml"
|
||||||
mv mafl-${RELEASE}/* /opt/mafl
|
|
||||||
rm -rf mafl-${RELEASE}
|
|
||||||
cd /opt/mafl
|
cd /opt/mafl
|
||||||
export NUXT_TELEMETRY_DISABLED=true
|
export NUXT_TELEMETRY_DISABLED=true
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ sed -i 's/NODE_ENV=production/NODE_ENV=development/g' /opt/outline/.env
|
|||||||
sed -i "s/generate_a_new_key/${SECRET_KEY}/g" /opt/outline/.env
|
sed -i "s/generate_a_new_key/${SECRET_KEY}/g" /opt/outline/.env
|
||||||
sed -i "s/user:pass@postgres/${DB_USER}:${DB_PASS}@localhost/g" /opt/outline/.env
|
sed -i "s/user:pass@postgres/${DB_USER}:${DB_PASS}@localhost/g" /opt/outline/.env
|
||||||
sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env
|
sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env
|
||||||
sed -i "32s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env
|
sed -i "5s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env
|
||||||
sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env
|
sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env
|
||||||
$STD yarn install --frozen-lockfile
|
$STD yarn install --frozen-lockfile
|
||||||
export NODE_OPTIONS="--max-old-space-size=3584"
|
export NODE_OPTIONS="--max-old-space-size=3584"
|
||||||
|
|||||||
@@ -45,12 +45,12 @@ fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/o
|
|||||||
msg_info "Configuring PLANKA"
|
msg_info "Configuring PLANKA"
|
||||||
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
||||||
SECRET_KEY=$(openssl rand -hex 64)
|
SECRET_KEY=$(openssl rand -hex 64)
|
||||||
cd /opt/planka/planka
|
cd /opt/planka
|
||||||
$STD npm install
|
$STD npm install
|
||||||
cp .env.sample .env
|
cp .env.sample .env
|
||||||
sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/planka/.env
|
sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/.env
|
||||||
sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/planka/.env
|
sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/.env
|
||||||
sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/planka/.env
|
sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/.env
|
||||||
$STD npm run db:init
|
$STD npm run db:init
|
||||||
msg_ok "Configured PLANKA"
|
msg_ok "Configured PLANKA"
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ Description=planka Service
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
WorkingDirectory=/opt/planka/planka
|
WorkingDirectory=/opt/planka
|
||||||
ExecStart=/usr/bin/npm start --prod
|
ExecStart=/usr/bin/npm start --prod
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
|
|||||||
@@ -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,23 +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
|
# 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 ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/
|
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
|
||||||
ln -s /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
LD_LIBRARY_PATH=/usr/lib/libreoffice/program
|
||||||
ln -s /usr/share/tesseract-ocr/5/tessdata/ /usr/share/tessdata
|
|
||||||
msg_ok "Installed Stirling-PDF"
|
STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf
|
||||||
|
TMPDIR=/tmp/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
|
||||||
@@ -107,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
|
||||||
@@ -137,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"
|
||||||
|
|||||||
@@ -14,16 +14,12 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y ffmpeg
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y vlc
|
ffmpeg \
|
||||||
|
vlc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Threadfin"
|
fetch_and_deploy_gh_release "threadfin" "threadfin/threadfin" "singlefile" "latest" "/opt/threadfin" "Threadfin_linux_amd64"
|
||||||
mkdir -p /opt/threadfin
|
|
||||||
curl -fsSL "https://github.com/Threadfin/Threadfin/releases/latest/download/Threadfin_linux_amd64" -o "/opt/threadfin/threadfin"
|
|
||||||
chmod +x /opt/threadfin/threadfin
|
|
||||||
|
|
||||||
msg_ok "Installed Threadfin"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/threadfin.service
|
cat <<EOF >/etc/systemd/system/threadfin.service
|
||||||
|
|||||||
@@ -83,11 +83,6 @@ update_os() {
|
|||||||
msg_info "Updating Container OS"
|
msg_info "Updating Container OS"
|
||||||
$STD apk -U upgrade
|
$STD apk -U upgrade
|
||||||
msg_ok "Updated Container OS"
|
msg_ok "Updated Container OS"
|
||||||
|
|
||||||
msg_info "Installing core dependencies"
|
|
||||||
$STD apk update
|
|
||||||
$STD apk add newt curl openssh nano mc ncurses gpg
|
|
||||||
msg_ok "Core dependencies installed"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function modifies the message of the day (motd) and SSH settings
|
# This function modifies the message of the day (motd) and SSH settings
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user