Compare commits
No commits in common. "main" and "2025-07-07" have entirely different histories.
main
...
2025-07-07
1
.gitattributes
vendored
1
.gitattributes
vendored
|
|
@ -26,7 +26,6 @@ SECURITY.md linguist-documentation
|
||||||
# ---------------------------------------
|
# ---------------------------------------
|
||||||
# Exclude generated/config files
|
# Exclude generated/config files
|
||||||
*.json linguist-generated
|
*.json linguist-generated
|
||||||
frontend/public/json/*.json linguist-generated=false
|
|
||||||
*.lock linguist-generated
|
*.lock linguist-generated
|
||||||
*.yml linguist-generated
|
*.yml linguist-generated
|
||||||
*.yaml linguist-generated
|
*.yaml linguist-generated
|
||||||
|
|
|
||||||
10
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
10
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
|
|
@ -60,21 +60,13 @@ body:
|
||||||
- Alpine
|
- Alpine
|
||||||
- Debian 11
|
- Debian 11
|
||||||
- Debian 12
|
- Debian 12
|
||||||
- Debian 13
|
- Ubuntu 20.04
|
||||||
- Ubuntu 22.04
|
- Ubuntu 22.04
|
||||||
- Ubuntu 24.04
|
- Ubuntu 24.04
|
||||||
- Ubuntu 24.10
|
- Ubuntu 24.10
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: pve_version
|
|
||||||
attributes:
|
|
||||||
label: 📈 Which Proxmox version are you on?
|
|
||||||
placeholder: "run pveversion in your PVE node console"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: issue_description
|
id: issue_description
|
||||||
attributes:
|
attributes:
|
||||||
|
|
|
||||||
43
.github/autolabeler-config.json
generated
vendored
43
.github/autolabeler-config.json
generated
vendored
|
|
@ -4,7 +4,6 @@
|
||||||
"fileStatus": "added",
|
"fileStatus": "added",
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"ct/**",
|
"ct/**",
|
||||||
"tools/**",
|
|
||||||
"install/**",
|
"install/**",
|
||||||
"misc/**",
|
"misc/**",
|
||||||
"turnkey/**",
|
"turnkey/**",
|
||||||
|
|
@ -18,13 +17,16 @@
|
||||||
"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": [
|
||||||
|
|
@ -32,7 +34,6 @@
|
||||||
"fileStatus": "removed",
|
"fileStatus": "removed",
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"ct/**",
|
"ct/**",
|
||||||
"tools/**",
|
|
||||||
"install/**",
|
"install/**",
|
||||||
"misc/**",
|
"misc/**",
|
||||||
"turnkey/**",
|
"turnkey/**",
|
||||||
|
|
@ -45,7 +46,11 @@
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"*.md"
|
"*.md",
|
||||||
|
".github/**",
|
||||||
|
"misc/*.func",
|
||||||
|
"misc/create_lxc.sh",
|
||||||
|
"api/**"
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
|
|
@ -57,9 +62,7 @@
|
||||||
"misc/*.func",
|
"misc/*.func",
|
||||||
"misc/create_lxc.sh"
|
"misc/create_lxc.sh"
|
||||||
],
|
],
|
||||||
"excludeGlobs": [
|
"excludeGlobs": []
|
||||||
"misc/api.func"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"website": [
|
"website": [
|
||||||
|
|
@ -68,9 +71,7 @@
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"frontend/**"
|
"frontend/**"
|
||||||
],
|
],
|
||||||
"excludeGlobs": [
|
"excludeGlobs": []
|
||||||
"frontend/public/json/**"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"api": [
|
"api": [
|
||||||
|
|
@ -101,6 +102,26 @@
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"high risk": [
|
||||||
|
{
|
||||||
|
"fileStatus": null,
|
||||||
|
"includeGlobs": [
|
||||||
|
"misc/build.func",
|
||||||
|
"misc/install.func",
|
||||||
|
"misc/create_lxc.sh"
|
||||||
|
],
|
||||||
|
"excludeGlobs": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"documentation": [
|
||||||
|
{
|
||||||
|
"fileStatus": null,
|
||||||
|
"includeGlobs": [
|
||||||
|
"*.md"
|
||||||
|
],
|
||||||
|
"excludeGlobs": []
|
||||||
|
}
|
||||||
|
],
|
||||||
"addon": [
|
"addon": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
|
|
|
||||||
120
.github/changelog-pr-config.json
generated
vendored
120
.github/changelog-pr-config.json
generated
vendored
|
|
@ -1,148 +1,112 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"title": "🆕 New Scripts",
|
"title": "🆕 New Scripts",
|
||||||
"labels": [
|
"labels": ["new script"]
|
||||||
"new script"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🚀 Updated Scripts",
|
"title": "🚀 Updated Scripts",
|
||||||
"labels": [
|
"labels": ["update script"],
|
||||||
"update script"
|
|
||||||
],
|
|
||||||
"subCategories": [
|
"subCategories": [
|
||||||
{
|
{
|
||||||
"title": "🐞 Bug Fixes",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": [
|
"labels": ["bugfix"],
|
||||||
"bugfix"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Features",
|
"title": "✨ New Features",
|
||||||
"labels": [
|
"labels": ["feature"],
|
||||||
"feature"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💥 Breaking Changes",
|
"title": "💥 Breaking Changes",
|
||||||
"labels": [
|
"labels": ["breaking change"],
|
||||||
"breaking change"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🔧 Refactor",
|
"title": "🔧 Refactor",
|
||||||
"labels": [
|
"labels": ["refactor"],
|
||||||
"refactor"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🧰 Maintenance",
|
"title": "🧰 Maintenance",
|
||||||
"labels": [
|
"labels": ["maintenance"],
|
||||||
"maintenance"
|
|
||||||
],
|
|
||||||
"subCategories": [
|
"subCategories": [
|
||||||
{
|
{
|
||||||
"title": "🐞 Bug Fixes",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": [
|
"labels": ["bugfix"],
|
||||||
"bugfix"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Features",
|
"title": "✨ New Features",
|
||||||
"labels": [
|
"labels": ["feature"],
|
||||||
"feature"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💥 Breaking Changes",
|
"title": "💥 Breaking Changes",
|
||||||
"labels": [
|
"labels": ["breaking change"],
|
||||||
"breaking change"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📡 API",
|
"title": "📡 API",
|
||||||
"labels": [
|
"labels": ["api"],
|
||||||
"api"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💾 Core",
|
"title": "💾 Core",
|
||||||
"labels": [
|
"labels": ["core"],
|
||||||
"core"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📂 Github",
|
"title": "📂 Github",
|
||||||
"labels": [
|
"labels": ["github"],
|
||||||
"github"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📝 Documentation",
|
"title" :"📝 Documentation",
|
||||||
"labels": [
|
"labels": ["documentation"],
|
||||||
"maintenance"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🔧 Refactor",
|
"title" :"🔧 Refactor",
|
||||||
"labels": [
|
"labels": ["refactor"],
|
||||||
"refactor"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🌐 Website",
|
"title": "🌐 Website",
|
||||||
"labels": [
|
"labels": ["website"],
|
||||||
"website"
|
|
||||||
],
|
|
||||||
"subCategories": [
|
"subCategories": [
|
||||||
{
|
{
|
||||||
"title": "🐞 Bug Fixes",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": [
|
"labels": ["bugfix"],
|
||||||
"bugfix"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Features",
|
"title": "✨ New Features",
|
||||||
"labels": [
|
"labels": ["feature"],
|
||||||
"feature"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💥 Breaking Changes",
|
"title": "💥 Breaking Changes",
|
||||||
"labels": [
|
"labels": ["breaking change"],
|
||||||
"breaking change"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📝 Script Information",
|
"title": "📝 Script Information",
|
||||||
"labels": [
|
"labels": ["json"],
|
||||||
"json"
|
"notes" : []
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "❔ Unlabelled",
|
"title": "❔ Unlabelled",
|
||||||
"labels": []
|
"labels": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "💥 Breaking Changes",
|
||||||
|
"labels": ["breaking change"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
2
.github/workflows/auto-update-app-headers.yml
generated
vendored
2
.github/workflows/auto-update-app-headers.yml
generated
vendored
|
|
@ -11,7 +11,7 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
update-app-files:
|
update-app-files:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
|
||||||
29
.github/workflows/autolabeler.yml
generated
vendored
29
.github/workflows/autolabeler.yml
generated
vendored
|
|
@ -1,7 +1,6 @@
|
||||||
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]
|
||||||
|
|
@ -9,7 +8,7 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
autolabeler:
|
autolabeler:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
env:
|
env:
|
||||||
|
|
@ -34,7 +33,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 || "";
|
const prBody = context.payload.pull_request.body.toLowerCase();
|
||||||
|
|
||||||
let labelsToAdd = new Set();
|
let labelsToAdd = new Set();
|
||||||
|
|
||||||
|
|
@ -74,35 +73,19 @@ jobs:
|
||||||
"✨ **New feature**": "feature",
|
"✨ **New feature**": "feature",
|
||||||
"💥 **Breaking change**": "breaking change",
|
"💥 **Breaking change**": "breaking change",
|
||||||
"🆕 **New script**": "new script",
|
"🆕 **New script**": "new script",
|
||||||
"🌍 **Website update**": "website", // handled special
|
"🌍 **Website update**": "website",
|
||||||
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
||||||
"📝 **Documentation update**": "documentation" // mapped to maintenance
|
"📝 **Documentation update**": "documentation"
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
||||||
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
|
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
|
||||||
const regex = new RegExp(`- \\[(x|X)\\]\\s*${escapedCheckbox}`, "i");
|
const regex = new RegExp(`- \[(x|X)\]\s*.*${escapedCheckbox}`, "i");
|
||||||
|
|
||||||
if (regex.test(prBody)) {
|
if (regex.test(prBody)) {
|
||||||
if (label === "website") {
|
labelsToAdd.add(label);
|
||||||
const hasJson = prFiles.some((f) => f.filename.startsWith("frontend/public/json/"));
|
|
||||||
const hasUpdateScript = labelsToAdd.has("update script");
|
|
||||||
const hasContentLabel = ["bugfix", "feature", "refactor"].some((l) => labelsToAdd.has(l));
|
|
||||||
|
|
||||||
if (!(hasUpdateScript && hasContentLabel)) {
|
|
||||||
labelsToAdd.add(hasJson ? "json" : "website");
|
|
||||||
}
|
|
||||||
} else if (label === "documentation") {
|
|
||||||
labelsToAdd.add("maintenance");
|
|
||||||
} else {
|
|
||||||
labelsToAdd.add(label);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (labelsToAdd.size === 0) {
|
|
||||||
labelsToAdd.add("needs triage");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (labelsToAdd.size > 0) {
|
if (labelsToAdd.size > 0) {
|
||||||
await github.rest.issues.addLabels({
|
await github.rest.issues.addLabels({
|
||||||
|
|
|
||||||
4
.github/workflows/changelog-pr.yml
generated
vendored
4
.github/workflows/changelog-pr.yml
generated
vendored
|
|
@ -8,7 +8,7 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
update-changelog-pull-request:
|
update-changelog-pull-request:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
env:
|
env:
|
||||||
CONFIG_PATH: .github/changelog-pr-config.json
|
CONFIG_PATH: .github/changelog-pr-config.json
|
||||||
BRANCH_NAME: github-action-update-changelog
|
BRANCH_NAME: github-action-update-changelog
|
||||||
|
|
@ -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: ["maintenance"], notes: [] },
|
{ title: "📝 Documentation", labels: ["documentation"], notes: [] },
|
||||||
{ title: "🔧 Refactor", labels: ["refactor"], notes: [] }
|
{ title: "🔧 Refactor", labels: ["refactor"], notes: [] }
|
||||||
] :
|
] :
|
||||||
obj.labels.includes("website") ? [
|
obj.labels.includes("website") ? [
|
||||||
|
|
|
||||||
2
.github/workflows/close-discussion.yml
generated
vendored
2
.github/workflows/close-discussion.yml
generated
vendored
|
|
@ -12,7 +12,7 @@ permissions:
|
||||||
jobs:
|
jobs:
|
||||||
close-discussion:
|
close-discussion:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
|
|
|
||||||
59
.github/workflows/close_template_issue.yml
generated
vendored
59
.github/workflows/close_template_issue.yml
generated
vendored
|
|
@ -1,59 +0,0 @@
|
||||||
name: Auto-Close Wrong Template Issues
|
|
||||||
on:
|
|
||||||
issues:
|
|
||||||
types: [opened]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
close_tteck_issues:
|
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Auto-close if wrong Template issue detected
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
const issue = context.payload.issue;
|
|
||||||
const content = `${issue.title}\n${issue.body}`;
|
|
||||||
const issueNumber = issue.number;
|
|
||||||
|
|
||||||
// Regex patterns (case-insensitive, flexible versioning)
|
|
||||||
const patterns = [
|
|
||||||
/Template\s+debian-13-standard_[\d.]+-[\d]+_amd64\.tar\.zst\s*\[(online|local)\]/i,
|
|
||||||
/Template\s+debian-13-standard_[\d.]+-[\d]+_amd64\.tar\.zst\s+is\s+missing\s+or\s+corrupted/i,
|
|
||||||
/Container\s+creation\s+failed\.?\s+Checking\s+if\s+template\s+is\s+corrupted\s+or\s+incomplete/i,
|
|
||||||
/Template\s+is\s+valid,\s+but\s+container\s+creation\s+still\s+failed/i,
|
|
||||||
/exit\s+code\s+0:\s+while\s+executing\s+command\s+bash\s+-c\s+"\$?\(curl\s+-fsSL\s+https:\/\/raw\.githubusercontent\.com\/[\w/-]+\/create_lxc\.sh\)"/i
|
|
||||||
];
|
|
||||||
|
|
||||||
const matched = patterns.some((regex) => regex.test(content));
|
|
||||||
|
|
||||||
if (matched) {
|
|
||||||
const message = `👋 Hello!
|
|
||||||
|
|
||||||
It looks like you are referencing a **container creation issue with a Debian 13 template** (e.g. \`debian-13-standard_13.x-x_amd64.tar.zst\`).
|
|
||||||
|
|
||||||
We receive many similar reports about this, and it’s not related to the scripts themselves but to **a Proxmox base template bug**.
|
|
||||||
|
|
||||||
Please refer to [discussion #8126](https://github.com/community-scripts/ProxmoxVE/discussions/8126) for details.
|
|
||||||
If your issue persists after following the guidance there, feel free to reopen this issue.
|
|
||||||
|
|
||||||
_This issue was automatically closed by a bot._`;
|
|
||||||
|
|
||||||
await github.rest.issues.createComment({
|
|
||||||
...context.repo,
|
|
||||||
issue_number: issueNumber,
|
|
||||||
body: message
|
|
||||||
});
|
|
||||||
|
|
||||||
await github.rest.issues.addLabels({
|
|
||||||
...context.repo,
|
|
||||||
issue_number: issueNumber,
|
|
||||||
labels: ["not planned"]
|
|
||||||
});
|
|
||||||
|
|
||||||
await github.rest.issues.update({
|
|
||||||
...context.repo,
|
|
||||||
issue_number: issueNumber,
|
|
||||||
state: "closed"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
2
.github/workflows/crawl-versions.yaml
generated
vendored
2
.github/workflows/crawl-versions.yaml
generated
vendored
|
|
@ -13,7 +13,7 @@ permissions:
|
||||||
jobs:
|
jobs:
|
||||||
crawl-versions:
|
crawl-versions:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
|
|
|
||||||
2
.github/workflows/delete-json-branch.yml
generated
vendored
2
.github/workflows/delete-json-branch.yml
generated
vendored
|
|
@ -10,7 +10,7 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
delete_branch:
|
delete_branch:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the code
|
- name: Checkout the code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
|
||||||
91
.github/workflows/frontend-cicd.yml
generated
vendored
91
.github/workflows/frontend-cicd.yml
generated
vendored
|
|
@ -24,98 +24,25 @@ concurrency:
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test-json-files:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: frontend
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
|
||||||
python-version: "3.x"
|
|
||||||
|
|
||||||
- name: Test JSON files
|
|
||||||
run: |
|
|
||||||
python3 << 'EOF'
|
|
||||||
import json
|
|
||||||
import glob
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
def test_json_files():
|
|
||||||
# Change to the correct directory
|
|
||||||
json_dir = "public/json"
|
|
||||||
if not os.path.exists(json_dir):
|
|
||||||
print(f"❌ Directory not found: {json_dir}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Find all JSON files
|
|
||||||
pattern = os.path.join(json_dir, "*.json")
|
|
||||||
json_files = glob.glob(pattern)
|
|
||||||
|
|
||||||
if not json_files:
|
|
||||||
print(f"⚠️ No JSON files found in {json_dir}")
|
|
||||||
return True
|
|
||||||
|
|
||||||
print(f"Testing {len(json_files)} JSON files for valid syntax...")
|
|
||||||
|
|
||||||
invalid_files = []
|
|
||||||
|
|
||||||
for file_path in json_files:
|
|
||||||
try:
|
|
||||||
with open(file_path, 'r', encoding='utf-8') as f:
|
|
||||||
json.load(f)
|
|
||||||
print(f"✅ Valid JSON: {file_path}")
|
|
||||||
except json.JSONDecodeError as e:
|
|
||||||
print(f"❌ Invalid JSON syntax in: {file_path}")
|
|
||||||
print(f" Error: {e}")
|
|
||||||
invalid_files.append(file_path)
|
|
||||||
except Exception as e:
|
|
||||||
print(f"⚠️ Error reading: {file_path}")
|
|
||||||
print(f" Error: {e}")
|
|
||||||
invalid_files.append(file_path)
|
|
||||||
|
|
||||||
print("\n=== JSON Validation Summary ===")
|
|
||||||
print(f"Total files tested: {len(json_files)}")
|
|
||||||
print(f"Valid files: {len(json_files) - len(invalid_files)}")
|
|
||||||
print(f"Invalid files: {len(invalid_files)}")
|
|
||||||
|
|
||||||
if invalid_files:
|
|
||||||
print("\n❌ Found invalid JSON file(s):")
|
|
||||||
for file_path in invalid_files:
|
|
||||||
print(f" - {file_path}")
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
print("\n✅ All JSON files have valid syntax!")
|
|
||||||
return True
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
success = test_json_files()
|
|
||||||
sys.exit(0 if success else 1)
|
|
||||||
EOF
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
needs: test-json-files
|
runs-on: runner-cluster-htl-set
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
working-directory: frontend
|
working-directory: frontend # Set default working directory for all run steps
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Bun
|
- name: Setup Node
|
||||||
uses: oven-sh/setup-bun@v2
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
bun-version: latest
|
node-version: "20"
|
||||||
|
cache: npm
|
||||||
|
cache-dependency-path: frontend/package-lock.json
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: npm ci --prefer-offline --legacy-peer-deps
|
||||||
|
|
||||||
- name: Configure Next.js for pages
|
- name: Configure Next.js for pages
|
||||||
uses: actions/configure-pages@v5
|
uses: actions/configure-pages@v5
|
||||||
|
|
@ -123,7 +50,7 @@ jobs:
|
||||||
static_site_generator: next
|
static_site_generator: next
|
||||||
|
|
||||||
- name: Build with Next.js
|
- name: Build with Next.js
|
||||||
run: bun run build
|
run: npm run build
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
if: github.ref == 'refs/heads/main'
|
if: github.ref == 'refs/heads/main'
|
||||||
|
|
|
||||||
2
.github/workflows/github-release.yml
generated
vendored
2
.github/workflows/github-release.yml
generated
vendored
|
|
@ -8,7 +8,7 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
create-daily-release:
|
create-daily-release:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
|
|
|
||||||
2
.github/workflows/update-json-date.yml
generated
vendored
2
.github/workflows/update-json-date.yml
generated
vendored
|
|
@ -11,7 +11,7 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
update-app-files:
|
update-app-files:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
|
||||||
2
.github/workflows/validate-filenames.yml
generated
vendored
2
.github/workflows/validate-filenames.yml
generated
vendored
|
|
@ -11,7 +11,7 @@ jobs:
|
||||||
check-files:
|
check-files:
|
||||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
name: Check changed files
|
name: Check changed files
|
||||||
runs-on: ubuntu-latest
|
runs-on: runner-cluster-htl-set
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
|
|
||||||
|
|
|
||||||
1977
CHANGELOG.md
1977
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
54
SECURITY.md
54
SECURITY.md
|
|
@ -1,64 +1,24 @@
|
||||||
# Security Policy
|
|
||||||
|
|
||||||
## Supported Versions
|
## Supported Versions
|
||||||
|
This project currently supports the following versions of Proxmox VE:
|
||||||
This project currently supports the following versions of Proxmox VE (PVE):
|
|
||||||
|
|
||||||
| Version | Supported |
|
| Version | Supported |
|
||||||
| ------- | ------------------ |
|
| ------- | ------------------ |
|
||||||
| 9.0.x | :white_check_mark: |
|
|
||||||
| 8.4.x | :white_check_mark: |
|
| 8.4.x | :white_check_mark: |
|
||||||
| 8.3.x | :white_check_mark: |
|
| 8.3.x | :white_check_mark: |
|
||||||
| 8.2.x | :white_check_mark: |
|
| 8.2.x | :white_check_mark: |
|
||||||
| 8.1.x | :white_check_mark: |
|
| 8.1.x | :white_check_mark: |
|
||||||
| 8.0.x | Limited support* ❕ |
|
| 8.0.x | Limited support* ❕|
|
||||||
| < 8.0 | :x: |
|
| < 8.0 | :x: |
|
||||||
|
|
||||||
*Version 8.0.x has limited support. Security updates may not be provided for all issues affecting this version.
|
*Version 8.0.x has limited support. Security updates may not be provided for all issues in this version.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
Security vulnerabilities must not be reported publicly to avoid potential exploitation.
|
Security vulnerabilities shouldn’t be reported publicly to prevent potential exploitation. Instead, please report any vulnerabilities privately by reaching out directly to us. You can either join our [Discord server](https://discord.gg/jsYVk5JBxq) and send a direct message to a maintainer or contact us via email at contact@community-scripts.org. Be sure to include a detailed description of the vulnerability and the steps to reproduce it. Thank you for helping us keep our project secure!
|
||||||
Instead, please report them privately via one of the following channels:
|
|
||||||
|
|
||||||
- **Discord**: Join our [Discord server](https://discord.gg/jsYVk5JBxq) and send a direct message to a maintainer.
|
Once a vulnerability has been reported, the project maintainers will review it and acknowledge the report within 7 business days. We will then work to address the vulnerability and provide a fix as soon as possible. Depending on the severity of the issue, a patch may be released immediately or included in the next scheduled update.
|
||||||
- **Email**: Write to us at **contact@community-scripts.org** with the subject line:
|
|
||||||
`Vulnerability Report - <Project/Script Name>`.
|
|
||||||
|
|
||||||
When reporting a vulnerability, please provide:
|
Please note that not all reported vulnerabilities may be accepted. The project maintainers reserve the right to decline a vulnerability report if it is deemed to be a low-risk issue or if it conflicts with the project's design or architecture. In such cases, we will provide an explanation for the decision.
|
||||||
|
|
||||||
- A clear description of the issue
|
If you have any questions or concerns about this security policy, please don't hesitate to contact the project maintainers.
|
||||||
- Steps to reproduce the vulnerability
|
|
||||||
- Affected versions or environments
|
|
||||||
- (Optional) Suggested fixes or workarounds
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Response Process
|
|
||||||
|
|
||||||
1. **Acknowledgment**
|
|
||||||
- We will review and acknowledge your report within **7 business days**.
|
|
||||||
|
|
||||||
2. **Assessment**
|
|
||||||
- The maintainers will verify the issue and classify its severity.
|
|
||||||
- Depending on impact, a patch may be released immediately or scheduled for the next update.
|
|
||||||
|
|
||||||
3. **Resolution**
|
|
||||||
- Critical security fixes will be prioritized.
|
|
||||||
- Non-critical issues may be deferred or declined with an explanation.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Disclaimer
|
|
||||||
|
|
||||||
Not all reported issues will be treated as vulnerabilities.
|
|
||||||
Reports may be declined if they are deemed:
|
|
||||||
- Low-risk
|
|
||||||
- Out of project scope
|
|
||||||
- Conflicting with intended design or architecture
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
If you have any questions or concerns about this security policy, please reach out to the maintainers through the contact options above.
|
|
||||||
|
|
|
||||||
27
ct/2fauth.sh
27
ct/2fauth.sh
|
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
@ -28,9 +28,11 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "2fauth" "Bubka/2FAuth"; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
$STD apt update
|
if [[ "${RELEASE}" != "$(cat ~/.2fauth 2>/dev/null || cat /opt/2fauth_version.txt 2>/dev/null)" ]]; then
|
||||||
$STD apt -y upgrade
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
|
||||||
msg_info "Creating Backup"
|
msg_info "Creating Backup"
|
||||||
mv "/opt/2fauth" "/opt/2fauth-backup"
|
mv "/opt/2fauth" "/opt/2fauth-backup"
|
||||||
|
|
@ -43,11 +45,10 @@ function update_script() {
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
lsb-release \
|
lsb-release \
|
||||||
gnupg2
|
gnupg2
|
||||||
PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,mysql,cli" PHP_FPM="YES" setup_php
|
PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,fpm,mysql,cli" setup_php
|
||||||
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
|
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
|
||||||
fi
|
fi
|
||||||
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"
|
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"
|
||||||
setup_composer
|
|
||||||
mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
|
mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
|
||||||
mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
|
mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
|
||||||
cd "/opt/2fauth" || return
|
cd "/opt/2fauth" || return
|
||||||
|
|
@ -59,14 +60,18 @@ function update_script() {
|
||||||
$STD systemctl restart nginx
|
$STD systemctl restart nginx
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf "v${RELEASE}.zip"
|
||||||
if dpkg -l | grep -q 'php8.2'; then
|
if dpkg -l | grep -q 'php8.2'; then
|
||||||
$STD apt remove --purge -y php8.2*
|
$STD apt-get remove --purge -y php8.2*
|
||||||
fi
|
fi
|
||||||
$STD apt -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt -y autoclean
|
$STD apt-get -y autoclean
|
||||||
$STD apt -y clean
|
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
|
echo "${RELEASE}" >/opt/2fauth_version.txt
|
||||||
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||||
# Source: https://actualbudget.org/
|
# Source: https://actualbudget.org/
|
||||||
|
|
||||||
APP="Actual Budget"
|
APP="Actual Budget"
|
||||||
var_tags="${var_tags:-finance}"
|
var_tags="finance"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="2048"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="4"
|
||||||
var_os="${var_os:-debian}"
|
var_os="debian"
|
||||||
var_version="${var_version:-13}"
|
var_version="12"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="1"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
|
|
@ -28,22 +28,23 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22"
|
||||||
|
setup_nodejs
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ -f /opt/actualbudget-data/config.json ]]; then
|
if [[ -f /opt/actualbudget-data/config.json ]]; then
|
||||||
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
|
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop actualbudget
|
systemctl stop actualbudget
|
||||||
msg_ok "Stopped Service"
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
$STD npm update -g @actual-app/sync-server
|
$STD npm update -g @actual-app/sync-server
|
||||||
echo "${RELEASE}" >/opt/actualbudget_version.txt
|
echo "${RELEASE}" >/opt/actualbudget_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start actualbudget
|
systemctl start actualbudget
|
||||||
msg_ok "Started Service"
|
msg_ok "Restarted ${APP}"
|
||||||
else
|
else
|
||||||
msg_info "${APP} is already up to date"
|
msg_info "${APP} is already up to date"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
@ -20,15 +20,15 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/AdGuardHome ]]; then
|
if [[ ! -d /opt/AdGuardHome ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_error "Adguard Home should be updated via the user interface."
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
msg_error "Adguard Home can only be updated via the user interface."
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_disk="${var_disk:-7}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
@ -27,39 +27,36 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if ! command -v memcached >/dev/null 2>&1; then
|
|
||||||
$STD apt update
|
RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
$STD apt install -y memcached libmemcached-tools
|
if [[ "${RELEASE}" != "$(cat ~/.adventurelog 2>/dev/null)" ]] || [[ ! -f ~/.adventurelog ]]; then
|
||||||
fi
|
|
||||||
if check_for_gh_release "adventurelog" "seanmorley15/adventurelog"; then
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop adventurelog-backend
|
systemctl stop adventurelog-backend
|
||||||
systemctl stop adventurelog-frontend
|
systemctl stop adventurelog-frontend
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Backup Old Installation"
|
|
||||||
cp -r /opt/adventurelog /opt/adventurelog-backup
|
|
||||||
rm -rf /opt/adventurelog
|
|
||||||
msg_ok "Backup done"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
# Backend Migration
|
||||||
cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
|
cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
|
||||||
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
||||||
cd /opt/adventurelog/backend/server || exit
|
|
||||||
|
cd /opt/adventurelog/backend/server
|
||||||
if [[ ! -x .venv/bin/python ]]; then
|
if [[ ! -x .venv/bin/python ]]; then
|
||||||
$STD uv venv .venv
|
$STD uv venv .venv
|
||||||
$STD .venv/bin/python -m ensurepip --upgrade
|
$STD .venv/bin/python -m ensurepip --upgrade
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$STD .venv/bin/python -m pip install --upgrade pip
|
$STD .venv/bin/python -m pip install --upgrade pip
|
||||||
$STD .venv/bin/python -m pip install -r requirements.txt
|
$STD .venv/bin/python -m pip install -r requirements.txt
|
||||||
$STD .venv/bin/python -m manage collectstatic --noinput
|
$STD .venv/bin/python -m manage collectstatic --noinput
|
||||||
$STD .venv/bin/python -m manage migrate
|
$STD .venv/bin/python -m manage migrate
|
||||||
|
|
||||||
|
# Frontend Migration
|
||||||
cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
|
cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
|
||||||
cd /opt/adventurelog/frontend || exit
|
cd /opt/adventurelog/frontend
|
||||||
$STD pnpm i
|
$STD pnpm i
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
@ -71,9 +68,13 @@ function update_script() {
|
||||||
msg_ok "Services Started"
|
msg_ok "Services Started"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
rm -rf /opt/adventurelog-backup
|
rm -rf /opt/adventurelog-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,30 +27,7 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||||
RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=Linux64&fromVersion=0" | grep -o 'https://.*\.zip')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.agentdvr 2>/dev/null)" ]] || [[ ! -f ~/.agentdvr ]]; then
|
|
||||||
msg_info "Stopping service"
|
|
||||||
systemctl stop AgentDVR
|
|
||||||
msg_ok "Service stopped"
|
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
|
||||||
cd /opt/agentdvr/agent
|
|
||||||
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
|
|
||||||
$STD unzip -o Agent_Linux64*.zip
|
|
||||||
chmod +x ./Agent
|
|
||||||
echo $RELEASE > ~/.agentdvr
|
|
||||||
rm -rf Agent_Linux64*.zip
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
|
|
||||||
msg_info "Starting service"
|
|
||||||
systemctl start AgentDVR
|
|
||||||
msg_ok "Service started"
|
|
||||||
|
|
||||||
msg_ok "Updated $APP successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: cobalt (cobaltgit)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://caddyserver.com/
|
|
||||||
|
|
||||||
APP="Alpine-Caddy"
|
|
||||||
var_tags="${var_tags:-webserver}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /etc/caddy ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
|
|
||||||
msg_info "Restarting Caddy"
|
|
||||||
rc-service caddy restart
|
|
||||||
msg_ok "Restarted Caddy"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
|
|
||||||
|
|
@ -27,15 +27,16 @@ function update_script() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sharevb/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
|
||||||
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
|
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
|
||||||
|
DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
curl -fsSL "https://github.com/sharevb/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" -o it-tools.zip
|
curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
|
||||||
mkdir -p /usr/share/nginx/html
|
mkdir -p /usr/share/nginx/html
|
||||||
rm -rf /usr/share/nginx/html/*
|
rm -rf /usr/share/nginx/html/*
|
||||||
$STD unzip it-tools.zip -d /tmp
|
$STD unzip it-tools.zip -d /tmp/it-tools
|
||||||
cp -r /tmp/dist/* /usr/share/nginx/html
|
cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
|
||||||
rm -rf /tmp/dist
|
rm -rf /tmp/it-tools
|
||||||
rm -f it-tools.zip
|
rm -f it-tools.zip
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: andrej-kocijan (Andrej Kocijan)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/redlib-org/redlib
|
|
||||||
|
|
||||||
APP="Alpine-Redlib"
|
|
||||||
var_tags="${var_tags:-alpine;frontend}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [[ ! -d /opt/redlib ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
$STD rc-service redlib stop
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
$STD rc-service redlib start
|
|
||||||
msg_ok "Started Service"
|
|
||||||
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5252${CL}"
|
|
||||||
|
|
@ -1,74 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/rustdesk/rustdesk-server
|
|
||||||
|
|
||||||
APP="Alpine-RustDeskServer"
|
|
||||||
var_tags="${var_tags:-alpine;monitoring}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/rustdesk-server ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
APIRELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [ "${RELEASE}" != "$(cat ~/.rustdesk-server 2>/dev/null)" ] || [ ! -f ~/.rustdesk-server ]; then
|
|
||||||
msg_info "Updating RustDesk Server to v${RELEASE}"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
$STD service rustdesk-server-hbbs stop
|
|
||||||
$STD service rustdesk-server-hbbr stop
|
|
||||||
temp_file1=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
|
|
||||||
$STD unzip "$temp_file1"
|
|
||||||
cp -r amd64/* /opt/rustdesk-server/
|
|
||||||
echo "${RELEASE}" >~/.rustdesk-server
|
|
||||||
$STD service rustdesk-server-hbbs start
|
|
||||||
$STD service rustdesk-server-hbbr start
|
|
||||||
rm -rf amd64
|
|
||||||
rm -f $temp_file1
|
|
||||||
msg_ok "Updated RustDesk Server successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
|
||||||
fi
|
|
||||||
if [ "${APIRELEASE}" != "$(cat ~/.rustdesk-api)" ] || [ ! -f ~/.rustdesk-api ]; then
|
|
||||||
msg_info "Updating RustDesk API to v${APIRELEASE}"
|
|
||||||
$STD service rustdesk-api stop
|
|
||||||
temp_file2=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-amd64.tar.gz" -o "$temp_file2"
|
|
||||||
$STD tar zxvf "$temp_file2"
|
|
||||||
cp -r release/* /opt/rustdesk-api
|
|
||||||
echo "${APIRELEASE}" >~/.rustdesk-api
|
|
||||||
$STD service rustdesk-api start
|
|
||||||
rm -rf release
|
|
||||||
rm -f $temp_file2
|
|
||||||
msg_ok "Updated RustDesk API"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. RustDesk API is already at v${APIRELEASE}"
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:21114${CL}"
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: tremor021 (Slaviša Arežina)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://teamspeak.com/en/
|
|
||||||
|
|
||||||
APP="Alpine-TeamSpeak-Server"
|
|
||||||
var_tags="${var_tags:-alpine;communication}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-2}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
|
|
||||||
if [[ ! -d /opt/teamspeak-server ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | head -1) && set -o pipefail
|
|
||||||
|
|
||||||
if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then
|
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
$STD service teamspeak stop
|
|
||||||
curl -fsSL "https://files.teamspeak-services.com/releases/server/${RELEASE}/teamspeak3-server_linux_amd64-${RELEASE}.tar.bz2" -o ts3server.tar.bz2
|
|
||||||
tar -xf ./ts3server.tar.bz2
|
|
||||||
cp -ru teamspeak3-server_linux_amd64/* /opt/teamspeak-server/
|
|
||||||
rm -f ~/ts3server.tar.bz*
|
|
||||||
rm -rf teamspeak3-server_linux_amd64
|
|
||||||
echo "${RELEASE}" >~/.teamspeak-server
|
|
||||||
$STD service teamspeak start
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:9987${CL}"
|
|
||||||
|
|
@ -29,19 +29,15 @@ function update_script() {
|
||||||
$STD apk -U upgrade
|
$STD apk -U upgrade
|
||||||
msg_ok "Updated packages"
|
msg_ok "Updated packages"
|
||||||
|
|
||||||
|
msg_info "Updating Tinyauth"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [ "${RELEASE}" != "$(cat ~/.tinyauth 2>/dev/null)" ] || [ ! -f ~/.tinyauth ]; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
$STD service tinyauth stop
|
|
||||||
msg_ok "Service Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating Tinyauth"
|
if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
|
||||||
|
$STD service tinyauth stop
|
||||||
rm -f /opt/tinyauth/tinyauth
|
rm -f /opt/tinyauth/tinyauth
|
||||||
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
|
||||||
echo "${RELEASE}" >~/.tinyauth
|
echo "${RELEASE}" >/opt/tinyauth_version.txt
|
||||||
msg_ok "Updated Tinyauth"
|
|
||||||
|
|
||||||
msg_info "Restarting Tinyauth"
|
msg_info "Restarting Tinyauth"
|
||||||
$STD service tinyauth start
|
$STD service tinyauth start
|
||||||
msg_ok "Restarted Tinyauth"
|
msg_ok "Restarted Tinyauth"
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.22}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_tun="${var_tun:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
|
|
@ -32,7 +31,7 @@ function update_script() {
|
||||||
if [[ -d /etc/wgdashboard/src ]]; then
|
if [[ -d /etc/wgdashboard/src ]]; then
|
||||||
msg_info "update WGDashboard"
|
msg_info "update WGDashboard"
|
||||||
cd /etc/wgdashboard/src
|
cd /etc/wgdashboard/src
|
||||||
echo "y" | ./wgd.sh update >/dev/null 2>&1
|
$STD echo "y" | ./wgd.sh update
|
||||||
$STD ./wgd.sh start
|
$STD ./wgd.sh start
|
||||||
msg_ok "WGDashboard updated"
|
msg_ok "WGDashboard updated"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_disk="${var_disk:-4}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ function update_script() {
|
||||||
fi
|
fi
|
||||||
RELEASE="$(curl -fsSL https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
|
RELEASE="$(curl -fsSL https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop apache-tika
|
systemctl stop apache-tika
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/apache-tika
|
cd /opt/apache-tika
|
||||||
|
|
@ -41,9 +41,9 @@ function update_script() {
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
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 ${APP}"
|
||||||
systemctl start apache-tika
|
systemctl start apache-tika
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
|
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ APP="Apt-Cacher-NG"
|
||||||
var_tags="${var_tags:-caching}"
|
var_tags="${var_tags:-caching}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
@ -20,18 +20,18 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var ]]; then
|
if [[ ! -d /var ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -20,38 +20,29 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/archivebox ]]; then
|
if [[ ! -d /opt/archivebox ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop archivebox
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd /opt/archivebox/data
|
||||||
|
pip install --upgrade --ignore-installed archivebox
|
||||||
|
sudo -u archivebox archivebox init
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start archivebox
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
|
||||||
|
|
||||||
msg_info "Stopping ArchiveBox"
|
|
||||||
systemctl stop archivebox
|
|
||||||
msg_ok "Stopped ArchiveBox"
|
|
||||||
|
|
||||||
msg_info "Upgrading Playwright"
|
|
||||||
$STD uv pip install playwright --system
|
|
||||||
$STD playwright install-deps chromium
|
|
||||||
msg_ok "Upgraded Playwright"
|
|
||||||
|
|
||||||
msg_info "Updating ArchiveBox"
|
|
||||||
cd /opt/archivebox/data
|
|
||||||
$STD uv pip install --system --upgrade --no-reinstall archivebox
|
|
||||||
sudo -u archivebox archivebox init
|
|
||||||
msg_ok "Updated ArchiveBox"
|
|
||||||
|
|
||||||
msg_info "Starting ArchiveBox"
|
|
||||||
systemctl start archivebox
|
|
||||||
msg_ok "Started ArchiveBox"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
23
ct/argus.sh
23
ct/argus.sh
|
|
@ -23,23 +23,24 @@ function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/argus ]]; then
|
if [[ ! -d /opt/argus ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "argus" "release-argus/Argus"; then
|
|
||||||
msg_info "Stopping service"
|
|
||||||
systemctl stop argus
|
|
||||||
msg_ok "Service stopped"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/release-argus/Argus/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Starting service"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
systemctl start argus
|
rm -f /opt/argus/Argus
|
||||||
msg_ok "Service started"
|
curl -fsSL "https://github.com/release-argus/Argus/releases/download/${RELEASE}/Argus-${RELEASE}.linux-amd64" -o /opt/argus/Argus
|
||||||
msg_ok "Updated Successfully"
|
chmod +x /opt/argus/Argus
|
||||||
|
systemctl restart argus
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "${APP} is already up to date (${RELEASE})"
|
||||||
fi
|
fi
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ APP="audiobookshelf"
|
||||||
var_tags="${var_tags:-podcast;audiobook}"
|
var_tags="${var_tags:-podcast;audiobook}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-5}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
@ -20,19 +20,15 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/default/audiobookshelf ]]; then
|
if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
echo "This application receives updates through the APT package manager."
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||||
# Source: https://www.authelia.com/
|
# Source: https://www.authelia.com/
|
||||||
|
|
||||||
APP="Authelia"
|
APP="Authelia"
|
||||||
var_tags="${var_tags:-authenticator}"
|
TAGS=""
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
|
|
@ -25,12 +25,12 @@ function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /etc/authelia/ ]]; then
|
if [[ ! -d "/etc/authelia/" ]]; 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/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if check_for_gh_release "authelia" "authelia/authelia"; then
|
if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
|
|
||||||
|
|
@ -40,10 +40,14 @@ function update_script() {
|
||||||
$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 Successfully"
|
|
||||||
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
|
||||||
|
|
@ -20,27 +20,29 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /root/.config/autobrr/config.toml ]]; then
|
if [[ ! -f /root/.config/autobrr/config.toml ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_info "Stopping ${APP} LXC"
|
||||||
|
systemctl stop autobrr.service
|
||||||
|
msg_ok "Stopped ${APP} LXC"
|
||||||
|
|
||||||
if check_for_gh_release "autobrr" "autobrr/autobrr"; then
|
msg_info "Updating ${APP} LXC"
|
||||||
msg_info "Stopping Service"
|
rm -rf /usr/local/bin/*
|
||||||
systemctl stop autobrr
|
curl -fsSL "$(curl -fsSL https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_x86_64 | cut -d\" -f4)" -o $(basename "$(curl -fsSL https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_x86_64 | cut -d\" -f4)")
|
||||||
msg_ok "Stopped Service"
|
tar -C /usr/local/bin -xzf autobrr*.tar.gz
|
||||||
|
rm -rf autobrr*.tar.gz
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz"
|
msg_info "Starting ${APP} LXC"
|
||||||
|
systemctl start autobrr.service
|
||||||
msg_info "Starting Service"
|
msg_ok "Started ${APP} LXC"
|
||||||
systemctl start autobrr
|
|
||||||
msg_ok "Started Service"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
fi
|
exit
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: vhsdream
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/gelbphoenix/autocaliweb
|
|
||||||
|
|
||||||
APP="Autocaliweb"
|
|
||||||
var_tags="${var_tags:-ebooks}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-6}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -d /opt/autocaliweb ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
setup_uv
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/gelbphoenix/autocaliweb/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
|
|
||||||
if check_for_gh_release "autocaliweb" "gelbphoenix/autocaliweb"; then
|
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
|
|
||||||
msg_ok "Stopped Services"
|
|
||||||
|
|
||||||
INSTALL_DIR="/opt/autocaliweb"
|
|
||||||
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
|
|
||||||
$STD tar -cf ~/autocaliweb_bkp.tar "$INSTALL_DIR"/{metadata_change_logs,dirs.json,.env,scripts/ingest_watcher.sh,scripts/auto_zipper_wrapper.sh,scripts/metadata_change_detector_wrapper.sh}
|
|
||||||
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
cd "$INSTALL_DIR"
|
|
||||||
if [[ ! -d "$VIRTUAL_ENV" ]]; then
|
|
||||||
$STD uv venv "$VIRTUAL_ENV"
|
|
||||||
fi
|
|
||||||
$STD uv sync --all-extras --active
|
|
||||||
cd "$INSTALL_DIR"/koreader/plugins
|
|
||||||
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
|
|
||||||
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
|
||||||
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
|
||||||
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
|
||||||
$STD zip -r koplugin.zip acwsync.koplugin/
|
|
||||||
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
|
|
||||||
mkdir -p "$INSTALL_DIR"/metadata_temp
|
|
||||||
$STD tar -xf ~/autocaliweb_bkp.tar --directory /
|
|
||||||
KEPUB_VERSION="$(/usr/bin/kepubify --version)"
|
|
||||||
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
|
|
||||||
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
|
|
||||||
echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
|
|
||||||
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
|
|
||||||
chown -R acw:acw "$INSTALL_DIR"
|
|
||||||
rm ~/autocaliweb_bkp.tar
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
|
|
||||||
msg_ok "Started Services"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"
|
|
||||||
|
|
@ -28,7 +28,8 @@ function update_script() {
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "babybuddy" "babybuddy/babybuddy"; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.babybuddy 2>/dev/null)" ]] || [[ ! -f ~/.babybuddy ]]; then
|
||||||
setup_uv
|
setup_uv
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
|
|
@ -37,19 +38,19 @@ function update_script() {
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Cleaning old files"
|
msg_info "Cleaning old files"
|
||||||
cp /opt/babybuddy/babybuddy/settings/production.py /tmp/production.py.bak
|
cp 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"
|
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/babybuddy
|
cd /opt/babybuddy
|
||||||
mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py
|
mv /tmp/production.py.bak 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
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Fixing permissions"
|
msg_info "Fixing permissions"
|
||||||
chown -R www-data:www-data /opt/data
|
chown -R www-data:www-data /opt/data
|
||||||
|
|
@ -61,10 +62,14 @@ function update_script() {
|
||||||
systemctl start uwsgi
|
systemctl start uwsgi
|
||||||
systemctl start nginx
|
systemctl start nginx
|
||||||
msg_ok "Services Started"
|
msg_ok "Services Started"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ function update_script() {
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/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 [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop backrest
|
systemctl stop backrest
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
|
|
@ -42,9 +42,9 @@ function update_script() {
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start backrest
|
systemctl start backrest
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f "$temp_file"
|
rm -f "$temp_file"
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,8 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "baikal" "sabre-io/Baikal"; then
|
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 [[ "${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"
|
||||||
|
|
@ -38,15 +39,12 @@ function update_script() {
|
||||||
msg_ok "Backed up data"
|
msg_ok "Backed up data"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Configuring 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/
|
||||||
cd /opt/baikal
|
|
||||||
$STD composer install
|
|
||||||
msg_ok "Configured Baikal"
|
msg_ok "Configured Baikal"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|
@ -57,6 +55,8 @@ function update_script() {
|
||||||
rm -rf /opt/baikal-backup
|
rm -rf /opt/baikal-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: bvdberg01 | CanbiZ
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/karlomikus/bar-assistant
|
|
||||||
# Source: https://github.com/karlomikus/vue-salt-rim
|
|
||||||
# Source: https://www.meilisearch.com/
|
|
||||||
|
|
||||||
APP="Bar-Assistant"
|
|
||||||
var_tags="${var_tags:-cocktails;drinks}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -d /opt/bar-assistant ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if check_for_gh_release "bar-assistant" "karlomikus/bar-assistant"; then
|
|
||||||
msg_info "Stopping nginx"
|
|
||||||
systemctl stop nginx
|
|
||||||
msg_ok "Stopped nginx"
|
|
||||||
|
|
||||||
msg_info "Backing up Bar Assistant"
|
|
||||||
mv /opt/bar-assistant /opt/bar-assistant-backup
|
|
||||||
msg_ok "Backed up Bar Assistant"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "bar-assistant" "karlomikus/bar-assistant" "tarball" "latest" "/opt/bar-assistant"
|
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Updating Bar-Assistant"
|
|
||||||
cp -r /opt/bar-assistant-backup/.env /opt/bar-assistant/.env
|
|
||||||
cp -r /opt/bar-assistant-backup/storage/bar-assistant /opt/bar-assistant/storage/bar-assistant
|
|
||||||
cd /opt/bar-assistant
|
|
||||||
$STD composer install --no-interaction
|
|
||||||
$STD php artisan migrate --force
|
|
||||||
$STD php artisan storage:link
|
|
||||||
$STD php artisan bar:setup-meilisearch
|
|
||||||
$STD php artisan scout:sync-index-settings
|
|
||||||
$STD php artisan config:cache
|
|
||||||
$STD php artisan route:cache
|
|
||||||
$STD php artisan event:cache
|
|
||||||
chown -R www-data:www-data /opt/bar-assistant
|
|
||||||
msg_ok "Updated Bar-Assistant"
|
|
||||||
|
|
||||||
msg_info "Starting nginx"
|
|
||||||
systemctl start nginx
|
|
||||||
msg_ok "Started nginx"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/bar-assistant-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim"; then
|
|
||||||
msg_info "Backing up Vue Salt Rim"
|
|
||||||
mv /opt/vue-salt-rim /opt/vue-salt-rim-backup
|
|
||||||
msg_ok "Backed up Vue Salt Rim"
|
|
||||||
|
|
||||||
msg_info "Stopping nginx"
|
|
||||||
systemctl stop nginx
|
|
||||||
msg_ok "Stopped nginx"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim" "tarball" "latest" "/opt/vue-salt-rim"
|
|
||||||
|
|
||||||
msg_info "Updating Vue Salt Rim"
|
|
||||||
cp /opt/vue-salt-rim-backup/public/config.js /opt/vue-salt-rim/public/config.js
|
|
||||||
cd /opt/vue-salt-rim
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build
|
|
||||||
msg_ok "Updated Vue Salt Rim"
|
|
||||||
|
|
||||||
msg_info "Starting nginx"
|
|
||||||
systemctl start nginx
|
|
||||||
msg_ok "Started nginx"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/vue-salt-rim-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
|
|
||||||
msg_info "Stopping Meilisearch"
|
|
||||||
systemctl stop meilisearch
|
|
||||||
msg_ok "Stopped Meilisearch"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
|
||||||
|
|
||||||
msg_info "Starting Meilisearch"
|
|
||||||
systemctl start meilisearch
|
|
||||||
msg_ok "Started Meilisearch"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
|
||||||
|
|
@ -28,8 +28,8 @@ 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/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if check_for_gh_release "barcodebuddy" "Forceu/barcodebuddy"; 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
|
||||||
|
|
@ -55,6 +55,8 @@ function update_script() {
|
||||||
rm -r /opt/barcodebuddy-backup
|
rm -r /opt/barcodebuddy-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
31
ct/bazarr.sh
31
ct/bazarr.sh
|
|
@ -20,27 +20,20 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var/lib/bazarr/ ]]; then
|
if [[ ! -d /var/lib/bazarr/ ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then
|
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
|
||||||
fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip"
|
|
||||||
|
|
||||||
msg_info "Setup Bazarr"
|
|
||||||
mkdir -p /var/lib/bazarr/
|
|
||||||
chmod 775 /opt/bazarr /var/lib/bazarr/
|
|
||||||
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
|
||||||
$STD uv pip install -r /opt/bazarr/requirements.txt --system
|
|
||||||
msg_ok "Setup Bazarr"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ function update_script() {
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP"
|
||||||
$STD /opt/beszel/beszel update
|
$STD /opt/beszel/beszel update
|
||||||
sleep 2 && chmod +x /opt/beszel/beszel
|
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,8 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"; then
|
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 [[ "${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"
|
||||||
|
|
@ -62,19 +63,22 @@ function update_script() {
|
||||||
rm -rf /opt/bitmagnet
|
rm -rf /opt/bitmagnet
|
||||||
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/bitmagnet
|
cd /opt/bitmagnet
|
||||||
VREL=v$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
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/
|
||||||
msg_ok "Updated $APP"
|
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_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
44
ct/blocky.sh
44
ct/blocky.sh
|
|
@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://0xerr0r.github.io/blocky
|
# Source: https://0xerr0r.github.io/blocky/latest/
|
||||||
|
|
||||||
APP="Blocky"
|
APP="Blocky"
|
||||||
var_tags="${var_tags:-adblock}"
|
var_tags="${var_tags:-adblock}"
|
||||||
|
|
@ -20,38 +20,18 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/blocky ]]; then
|
if [[ ! -d /var ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
if check_for_gh_release "blocky" "0xERR0R/blocky"; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop blocky
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Backup Config"
|
|
||||||
mv /opt/blocky/config.yml /opt/config.yml
|
|
||||||
msg_ok "Backed Up Config"
|
|
||||||
|
|
||||||
msg_info "Removing Old Version"
|
|
||||||
rm -rf /opt/blocky
|
|
||||||
msg_ok "Removed Old Version"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
|
|
||||||
|
|
||||||
msg_info "Restore Config"
|
|
||||||
mv /opt/config.yml /opt/blocky/config.yml
|
|
||||||
msg_ok "Restored Config"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start blocky
|
|
||||||
msg_ok "Started Service"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ 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: MickLesk (CanbiZ)
|
# Author: MickLesk (CanbiZ)
|
||||||
# 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/booklore-app/BookLore
|
# Source: https://github.com/adityachandelgit/BookLore
|
||||||
|
|
||||||
APP="BookLore"
|
APP="BookLore"
|
||||||
var_tags="${var_tags:-books;library}"
|
var_tags="${var_tags:-books;library}"
|
||||||
var_cpu="${var_cpu:-3}"
|
var_cpu="${var_cpu:-3}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-7}"
|
var_disk="${var_disk:-7}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
|
|
@ -28,16 +28,14 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "booklore" "booklore-app/BookLore"; then
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop booklore
|
systemctl stop booklore
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "backup old install"
|
fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
|
||||||
mv /opt/booklore /opt/booklore_bak
|
|
||||||
msg_ok "backup done"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
msg_info "Building Frontend"
|
||||||
cd /opt/booklore/booklore-ui
|
cd /opt/booklore/booklore-ui
|
||||||
|
|
@ -45,11 +43,9 @@ function update_script() {
|
||||||
$STD npm run build --configuration=production
|
$STD npm run build --configuration=production
|
||||||
msg_ok "Built Frontend"
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
JAVA_VERSION="25" setup_java
|
|
||||||
|
|
||||||
msg_info "Building Backend"
|
msg_info "Building Backend"
|
||||||
cd /opt/booklore/booklore-api
|
cd /opt/booklore/booklore-api
|
||||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||||
$STD ./gradlew clean build --no-daemon
|
$STD ./gradlew clean build --no-daemon
|
||||||
mkdir -p /opt/booklore/dist
|
mkdir -p /opt/booklore/dist
|
||||||
|
|
@ -64,9 +60,11 @@ function update_script() {
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start booklore
|
systemctl start booklore
|
||||||
systemctl reload nginx
|
systemctl reload nginx
|
||||||
rm -rf /opt/booklore_bak
|
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,8 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "bookstack" "BookStackApp/BookStack"; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
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"
|
||||||
|
|
@ -39,7 +40,6 @@ function update_script() {
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "bookstack" "BookStackApp/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
|
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Restoring backup"
|
msg_info "Restoring backup"
|
||||||
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
||||||
|
|
@ -57,6 +57,7 @@ function update_script() {
|
||||||
chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
|
chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
|
||||||
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
|
||||||
msg_ok "Configured BookStack"
|
msg_ok "Configured BookStack"
|
||||||
|
|
||||||
msg_info "Starting Apache2"
|
msg_info "Starting Apache2"
|
||||||
|
|
@ -67,9 +68,12 @@ function update_script() {
|
||||||
rm -rf /opt/bookstack-backup
|
rm -rf /opt/bookstack-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,9 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "bytestash" "jordan-dalby/ByteStash"; then
|
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 [[ "${RELEASE}" != "$(cat ~/.bytestash 2>/dev/null)" ]] || [[ ! -f ~/.bytestash ]]; then
|
||||||
|
|
||||||
read -rp "${TAB3}Did you make a backup via application WebUI? (y/n): " backuped
|
read -rp "${TAB3}Did you make a backup via application WebUI? (y/n): " backuped
|
||||||
if [[ "$backuped" =~ ^[Yy]$ ]]; then
|
if [[ "$backuped" =~ ^[Yy]$ ]]; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
|
|
@ -55,7 +57,10 @@ function update_script() {
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
15
ct/caddy.sh
15
ct/caddy.sh
|
|
@ -9,7 +9,7 @@ APP="Caddy"
|
||||||
var_tags="${var_tags:-webserver}"
|
var_tags="${var_tags:-webserver}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
@ -31,19 +31,6 @@ function update_script() {
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
|
|
||||||
if command -v xcaddy >/dev/null 2>&1; then
|
|
||||||
setup_go
|
|
||||||
msg_info "Updating xCaddy"
|
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
|
|
||||||
VERSION="${RELEASE#v}"
|
|
||||||
curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${VERSION}_linux_amd64.deb" -o "xcaddy_${VERSION}_linux_amd64.deb"
|
|
||||||
$STD dpkg -i "xcaddy_${VERSION}_linux_amd64.deb"
|
|
||||||
rm -f "xcaddy_${VERSION}_linux_amd64.deb"
|
|
||||||
$STD xcaddy build
|
|
||||||
msg_ok "Updated xCaddy"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,9 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop cps
|
systemctl stop cps
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
cd /opt/kepubify
|
cd /opt/kepubify
|
||||||
|
|
@ -121,9 +121,9 @@ function update_script() {
|
||||||
$STD pip install --upgrade calibreweb
|
$STD pip install --upgrade calibreweb
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start cps
|
systemctl start cps
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,6 @@ function update_script() {
|
||||||
msg_ok "Updated Dependencies"
|
msg_ok "Updated Dependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
$STD pip3 install changedetection.io --upgrade
|
$STD pip3 install changedetection.io --upgrade
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
@ -51,13 +49,11 @@ function update_script() {
|
||||||
$STD git -C /opt/browserless/ fetch --all
|
$STD git -C /opt/browserless/ fetch --all
|
||||||
$STD git -C /opt/browserless/ reset --hard origin/main
|
$STD git -C /opt/browserless/ reset --hard origin/main
|
||||||
$STD npm update --prefix /opt/browserless
|
$STD npm update --prefix /opt/browserless
|
||||||
$STD npm ci --include=optional --include=dev --prefix /opt/browserless
|
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps
|
||||||
# Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed.
|
# Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed.
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
|
||||||
$STD npm install --prefix /opt/browserless esbuild typescript ts-node @types/node --save-dev
|
|
||||||
$STD npm run build --prefix /opt/browserless
|
$STD npm run build --prefix /opt/browserless
|
||||||
$STD npm run build:function --prefix /opt/browserless
|
$STD npm run build:function --prefix /opt/browserless
|
||||||
$STD npm prune production --prefix /opt/browserless
|
$STD npm prune production --prefix /opt/browserless
|
||||||
|
|
|
||||||
|
|
@ -27,20 +27,22 @@ 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/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
$STD omd stop monitoring
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
$STD omd cp monitoring monitoringbackup
|
$STD omd stop monitoring
|
||||||
curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
|
$STD omd cp monitoring monitoringbackup
|
||||||
$STD apt-get install -y /opt/checkmk.deb
|
curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
|
||||||
$STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
|
$STD apt-get install -y /opt/checkmk.deb
|
||||||
$STD omd start monitoring
|
$STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
|
||||||
$STD omd -f rm monitoringbackup
|
$STD omd start monitoring
|
||||||
$STD omd cleanup
|
$STD omd -f rm monitoringbackup
|
||||||
rm -rf /opt/checkmk.deb
|
$STD omd cleanup
|
||||||
msg_ok "Updated ${APP}"
|
rm -rf /opt/checkmk.deb
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Lucas Zampieri (zampierilucas) | MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/Cleanuparr/Cleanuparr
|
|
||||||
|
|
||||||
APP="Cleanuparr"
|
|
||||||
var_tags="${var_tags:-arr}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -f /opt/cleanuparr/Cleanuparr ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if check_for_gh_release "cleanuparr" "Cleanuparr/Cleanuparr"; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop cleanuparr
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start cleanuparr
|
|
||||||
msg_ok "Started Service"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:11011${CL}"
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
@ -20,18 +20,18 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/systemd/system/cloudflared.service ]]; then
|
if [[ ! -d /var ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
$STD apt update
|
$STD apt-get update
|
||||||
$STD apt -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://cloudreve.org/
|
|
||||||
|
|
||||||
APP="Cloudreve"
|
|
||||||
var_tags="${var_tags:-cloud}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-10}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [[ ! -d /opt/cloudreve ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if check_for_gh_release "cloudreve" "cloudreve/cloudreve"; then
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop cloudreve
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_amd64.tar.gz"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start cloudreve
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5212${CL}"
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
@ -27,12 +27,73 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
|
||||||
|
"1" "Update LXC" ON \
|
||||||
|
"2" "Install cockpit-file-sharing" OFF \
|
||||||
|
"3" "Install cockpit-identities" OFF \
|
||||||
|
"4" "Install cockpit-navigator" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
msg_info "Updating ${APP} LXC"
|
if [ "$UPD" == "1" ]; then
|
||||||
$STD apt update
|
msg_info "Updating ${APP} LXC"
|
||||||
$STD apt -y upgrade
|
$STD apt-get update
|
||||||
msg_ok "Updated ${APP} LXC"
|
$STD apt-get -y upgrade
|
||||||
exit
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$UPD" == "2" ]; then
|
||||||
|
msg_info "Installing dependencies (patience)"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
attr \
|
||||||
|
nfs-kernel-server \
|
||||||
|
samba \
|
||||||
|
samba-common-bin \
|
||||||
|
winbind \
|
||||||
|
gawk
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
msg_info "Installing Cockpit file sharing"
|
||||||
|
URL=$(curl -fsSL https://api.github.com/repos/45Drives/cockpit-file-sharing/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4)
|
||||||
|
FILE=$(basename "$URL")
|
||||||
|
curl -fsSL "$URL" -o "$FILE"
|
||||||
|
$STD dpkg -i "$FILE" || $STD apt-get install -f -y
|
||||||
|
rm -f "$FILE"
|
||||||
|
msg_ok "Installed Cockpit file sharing"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$UPD" == "3" ]; then
|
||||||
|
msg_info "Installing dependencies (patience)"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
psmisc \
|
||||||
|
samba \
|
||||||
|
samba-common-bin
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
msg_info "Installing Cockpit identities"
|
||||||
|
URL=$(curl -fsSL https://api.github.com/repos/45Drives/cockpit-identities/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4)
|
||||||
|
FILE=$(basename "$URL")
|
||||||
|
curl -fsSL "$URL" -o "$FILE"
|
||||||
|
$STD dpkg -i "$FILE" || $STD apt-get install -f -y
|
||||||
|
rm -f "$FILE"
|
||||||
|
msg_ok "Installed Cockpit identities"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$UPD" == "4" ]; then
|
||||||
|
msg_info "Installing dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
rsync \
|
||||||
|
zip
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
msg_info "Installing Cockpit navigator"
|
||||||
|
URL=$(curl -fsSL https://api.github.com/repos/45Drives/cockpit-navigator/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4)
|
||||||
|
FILE=$(basename "$URL")
|
||||||
|
curl -fsSL "$URL" -o "$FILE"
|
||||||
|
$STD dpkg -i "$FILE" || $STD apt-get install -f -y
|
||||||
|
rm -f "$FILE"
|
||||||
|
msg_ok "Installed Cockpit navigator"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -23,15 +23,15 @@ 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
|
||||||
if check_for_gh_release "commafeed" "Athou/commafeed"; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
msg_info "Stopping Service"
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop commafeed
|
systemctl stop commafeed
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
if ! [[ $(dpkg -s rsync 2>/dev/null) ]]; then
|
if ! [[ $(dpkg -s rsync 2>/dev/null) ]]; then
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
|
|
@ -40,24 +40,20 @@ function update_script() {
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
msg_info "Backing up existing data"
|
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")
|
||||||
mv /opt/commafeed/data /opt/data.bak
|
$STD unzip commafeed-"${RELEASE}"-h2-jvm.zip
|
||||||
msg_ok "Backed up existing 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}"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
|
msg_info "Starting ${APP}"
|
||||||
|
|
||||||
if [ -d /opt/data.bak ] && [ "$(ls -A /opt/data.bak)" ]; then
|
|
||||||
msg_info "Restoring data"
|
|
||||||
mv /opt/data.bak /opt/commafeed/data
|
|
||||||
msg_ok "Restored data"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start commafeed
|
systemctl start commafeed
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
@ -27,21 +27,31 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "configarr" "raydak-labs/configarr"; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/raydak-labs/configarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Stopping Service"
|
if [[ "${RELEASE}" != "$(cat ~/.configarr 2>/dev/null || cat /opt/configarr_version.txt 2>/dev/null)" ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
systemctl stop configarr-task.timer
|
systemctl stop configarr-task.timer
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
mkdir -p /opt/backup/
|
mkdir -p /opt/backup/
|
||||||
mv /opt/configarr/{config.yml,secrets.yml,.env} /opt/backup/
|
mv /opt/configarr/{config.yml,secrets.yml,.env} "/opt/backup/"
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-x64.tar.xz"
|
rm -rf /opt/configarr
|
||||||
mv /opt/backup/{config.yml,secrets.yml,.env} /opt/configarr/
|
fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr"
|
||||||
rm -rf /opt/backup
|
mv /opt/backup/* /opt/configarr/
|
||||||
|
cd /opt/configarr
|
||||||
|
$STD pnpm install
|
||||||
|
$STD pnpm run build
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting $APP"
|
||||||
systemctl start configarr-task.timer
|
systemctl start configarr-task.timer
|
||||||
msg_ok "Started Service"
|
msg_ok "Started configarr"
|
||||||
msg_ok "Updated Successfully!"
|
|
||||||
|
rm -rf /opt/backup
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,8 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "ConvertX" "C4illin/ConvertX"; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/C4illin/ConvertX/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.convertx 2>/dev/null)" ]] || [[ ! -f ~/.convertx ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop convertx
|
systemctl stop convertx
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
@ -40,21 +41,25 @@ function update_script() {
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
|
fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
if [[ -d /opt/data ]]; then
|
if [[ -d /opt/data ]]; then
|
||||||
mv /opt/data /opt/convertx/data
|
mv /opt/data /opt/convertx/data
|
||||||
fi
|
fi
|
||||||
cd /opt/convertx
|
cd /opt/convertx
|
||||||
$STD bun install
|
$STD bun install
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start convertx
|
systemctl start convertx
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
|
||||||
|
|
@ -68,10 +68,10 @@ function update_script() {
|
||||||
msg_ok "Started Crafty-Controller"
|
msg_ok "Started Crafty-Controller"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
exit
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. Crafty-Controller is already at v${RELEASE}."
|
||||||
fi
|
fi
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -33,39 +33,63 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
NODE_VERSION="22" setup_nodejs
|
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
|
||||||
|
if ! command -v npm >/dev/null 2>&1; then
|
||||||
|
echo "Installing NPM..."
|
||||||
|
$STD apt-get install -y npm
|
||||||
|
echo "Installed NPM..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
$STD /opt/cronicle/bin/control.sh upgrade
|
$STD /opt/cronicle/bin/control.sh upgrade
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [ "$UPD" == "2" ]; then
|
if [ "$UPD" == "2" ]; then
|
||||||
NODE_VERSION="22" setup_nodejs
|
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
|
||||||
if check_for_gh_release "cronicle" "jhuckaby/Cronicle"; then
|
if ! command -v npm >/dev/null 2>&1; then
|
||||||
IP=$(hostname -I | awk '{print $1}')
|
echo "Installing NPM..."
|
||||||
msg_info "Installing Dependencies"
|
$STD apt-get install -y npm
|
||||||
$STD apt-get install -y \
|
echo "Installed NPM..."
|
||||||
git \
|
fi
|
||||||
build-essential \
|
|
||||||
ca-certificates \
|
|
||||||
gnupg2
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
|
||||||
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle"
|
|
||||||
|
|
||||||
msg_info "Configuring Cronicle Worker"
|
|
||||||
cd /opt/cronicle
|
|
||||||
$STD npm install
|
|
||||||
$STD node bin/build.js dist
|
|
||||||
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
|
||||||
$STD /opt/cronicle/bin/control.sh start
|
|
||||||
msg_ok "Installed Cronicle Worker"
|
|
||||||
|
|
||||||
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
|
|
||||||
exit
|
|
||||||
fi
|
fi
|
||||||
|
LATEST=$(curl -fsSL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
|
IP=$(hostname -I | awk '{print $1}')
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
|
||||||
|
$STD apt-get install -y git
|
||||||
|
$STD apt-get install -y make
|
||||||
|
$STD apt-get install -y g++
|
||||||
|
$STD apt-get install -y gcc
|
||||||
|
$STD apt-get install -y ca-certificates
|
||||||
|
$STD apt-get install -y gnupg
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setting up Node.js Repository"
|
||||||
|
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
|
||||||
|
msg_ok "Set up Node.js Repository"
|
||||||
|
|
||||||
|
msg_info "Installing Node.js"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y nodejs
|
||||||
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
|
msg_info "Installing Cronicle Worker"
|
||||||
|
mkdir -p /opt/cronicle
|
||||||
|
cd /opt/cronicle
|
||||||
|
$STD tar zxvf <(curl -fsSL https://github.com/jhuckaby/Cronicle/archive/${LATEST}.tar.gz) --strip-components 1
|
||||||
|
$STD npm install
|
||||||
|
$STD node bin/build.js dist
|
||||||
|
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
||||||
|
$STD /opt/cronicle/bin/control.sh start
|
||||||
|
$STD cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled
|
||||||
|
chmod 775 /etc/init.d/cronicled
|
||||||
|
$STD update-rc.d cronicled defaults
|
||||||
|
msg_ok "Installed Cronicle Worker"
|
||||||
|
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,8 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "cryptpad" "cryptpad/cryptpad"; then
|
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 ~/.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"
|
||||||
|
|
@ -39,12 +40,12 @@ function update_script() {
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
|
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
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
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Restoring configuration"
|
msg_info "Restoring configuration"
|
||||||
mv /opt/config.js /opt/cryptpad/config/
|
mv /opt/config.js /opt/cryptpad/config/
|
||||||
|
|
@ -53,7 +54,10 @@ function update_script() {
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start cryptpad
|
systemctl start cryptpad
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
ct/dashy.sh
15
ct/dashy.sh
|
|
@ -27,10 +27,12 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "dashy" "Lissy93/dashy"; then
|
|
||||||
msg_info "Stopping Service"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.dashy 2>/dev/null)" ]] || [[ ! -f ~/.dashy ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop dashy
|
systemctl stop dashy
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Backing up conf.yml"
|
msg_info "Backing up conf.yml"
|
||||||
cd ~
|
cd ~
|
||||||
|
|
@ -44,11 +46,11 @@ function update_script() {
|
||||||
rm -rf /opt/dashy
|
rm -rf /opt/dashy
|
||||||
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
|
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cd /opt/dashy
|
cd /opt/dashy
|
||||||
npm install
|
npm install
|
||||||
npm run build
|
npm run build
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Restoring conf.yml"
|
msg_info "Restoring conf.yml"
|
||||||
cd ~
|
cd ~
|
||||||
|
|
@ -62,7 +64,10 @@ 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
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
@ -28,8 +28,8 @@ function update_script() {
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
$STD apt update
|
$STD apt-get update
|
||||||
$STD apt -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
76
ct/docker.sh
76
ct/docker.sh
|
|
@ -20,68 +20,18 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
if [[ ! -d /var ]]; then
|
||||||
get_latest_release() {
|
msg_error "No ${APP} Installation Found!"
|
||||||
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
exit
|
||||||
}
|
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"
|
exit
|
||||||
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
@ -90,5 +40,3 @@ 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} If you installed Portainer, access it at the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-3}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
|
|
@ -30,11 +30,11 @@ function update_script() {
|
||||||
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
|
||||||
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) }')
|
||||||
if check_for_gh_release "docmost" "docmost/docmost"; then
|
if [[ "${RELEASE}" != "$(cat ~/.docmost 2>/dev/null)" ]] || [[ ! -f ~/.docmost ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop docmost
|
systemctl stop docmost
|
||||||
msg_ok "Stopped Service"
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
msg_info "Backing up data"
|
msg_info "Backing up data"
|
||||||
cp /opt/docmost/.env /opt/
|
cp /opt/docmost/.env /opt/
|
||||||
|
|
@ -44,7 +44,7 @@ function update_script() {
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
|
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
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
|
||||||
|
|
@ -52,10 +52,13 @@ function update_script() {
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start docmost
|
systemctl start docmost
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ function update_script() {
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/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 [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop documenso
|
systemctl stop documenso
|
||||||
msg_ok "Stopped Service"
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cp /opt/documenso/.env /opt/
|
cp /opt/documenso/.env /opt/
|
||||||
|
|
@ -53,9 +53,9 @@ function update_script() {
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start documenso
|
systemctl start documenso
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
|
|
|
||||||
|
|
@ -20,27 +20,37 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /usr/bin/duplicati-server ]]; then
|
if [[ ! -f /usr/bin/duplicati-server ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||||
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop duplicati
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
curl -fsSL "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb" -o $(basename "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb")
|
||||||
|
$STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start duplicati
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf ~/duplicati-${RELEASE}-linux-x64-gui.deb
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "duplicati" "duplicati/duplicati"; then
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop duplicati
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-x64-gui.deb"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start duplicati
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||||
APP="Element Synapse"
|
APP="Element Synapse"
|
||||||
var_tags="${var_tags:-server}"
|
var_tags="${var_tags:-server}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
|
||||||
24
ct/emby.sh
24
ct/emby.sh
|
|
@ -23,23 +23,25 @@ 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
|
||||||
if check_for_gh_release "emby" "MediaBrowser/Emby.Releases"; then
|
LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop emby-server
|
systemctl stop emby-server
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
msg_info "Updating ${APP}"
|
||||||
|
$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 Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start emby-server
|
systemctl start emby-server
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
53
ct/emqx.sh
53
ct/emqx.sh
|
|
@ -20,49 +20,18 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
if [[ ! -d /var ]]; then
|
||||||
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)
|
msg_error "No ${APP} Installation Found!"
|
||||||
if [[ "$RELEASE" != "$(cat ~/.emqx 2>/dev/null)" ]] || [[ ! -f ~/.emqx ]]; then
|
exit
|
||||||
msg_info "Stopping EMQX"
|
|
||||||
systemctl stop emqx
|
|
||||||
msg_ok "Stopped EMQX"
|
|
||||||
|
|
||||||
msg_info "Removing old EMQX"
|
|
||||||
if dpkg -l | grep -q "^ii\s\+emqx\s"; then
|
|
||||||
$STD apt-get remove --purge -y emqx
|
|
||||||
elif dpkg -l | grep -q "^ii\s\+emqx-enterprise\s"; then
|
|
||||||
$STD apt-get remove --purge -y emqx-enterprise
|
|
||||||
else
|
|
||||||
msg_ok "No old EMQX package found"
|
|
||||||
fi
|
fi
|
||||||
msg_ok "Removed old EMQX"
|
msg_info "Updating $APP LXC"
|
||||||
|
$STD apt-get update
|
||||||
msg_info "Downloading EMQX v${RELEASE}"
|
$STD apt-get -y upgrade
|
||||||
DEB_FILE="/tmp/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
|
msg_ok "Updated $APP LXC"
|
||||||
curl -fsSL -o "$DEB_FILE" "https://www.emqx.com/en/downloads/enterprise/v${RELEASE}/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
|
exit
|
||||||
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
|
|
||||||
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -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:-2}"
|
var_cpu="${var_cpu:-1}"
|
||||||
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}"
|
||||||
|
|
@ -26,38 +26,35 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "ersatztv" "ErsatzTV/ErsatzTV"; then
|
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
|
||||||
msg_info "Stopping ErsatzTV"
|
msg_info "Stopping ErsatzTV"
|
||||||
systemctl stop ersatzTV
|
systemctl stop ersatzTV
|
||||||
msg_ok "Stopped ErsatzTV"
|
msg_ok "Stopped ErsatzTV"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
|
msg_info "Updating ErsatzTV"
|
||||||
|
cp -R /opt/ErsatzTV/ ErsatzTV-backup
|
||||||
|
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"
|
||||||
fi
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then
|
|
||||||
msg_info "Stopping ErsatzTV"
|
|
||||||
systemctl stop ersatzTV
|
|
||||||
msg_ok "Stopped ErsatzTV"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
|
|
||||||
|
|
||||||
msg_info "Set ErsatzTV-ffmpeg links"
|
|
||||||
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
|
|
||||||
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
|
|
||||||
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/local/bin/ffplay
|
|
||||||
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
|
|
||||||
msg_ok "ffmpeg links set"
|
|
||||||
|
|
||||||
msg_info "Starting ErsatzTV"
|
|
||||||
systemctl start ersatzTV
|
|
||||||
msg_ok "Started ErsatzTV"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ APP="ESPHome"
|
||||||
var_tags="${var_tags:-automation}"
|
var_tags="${var_tags:-automation}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
@ -28,9 +28,9 @@ function update_script() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop esphomeDashboard
|
systemctl stop esphomeDashboard
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
VENV_PATH="/opt/esphome/.venv"
|
VENV_PATH="/opt/esphome/.venv"
|
||||||
ESPHOME_BIN="${VENV_PATH}/bin/esphome"
|
ESPHOME_BIN="${VENV_PATH}/bin/esphome"
|
||||||
|
|
@ -78,9 +78,9 @@ EOF
|
||||||
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
|
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
|
||||||
msg_ok "Linked esphome binary"
|
msg_ok "Linked esphome binary"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start esphomeDashboard
|
systemctl start esphomeDashboard
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||||
# Source: https://github.com/excalidraw/excalidraw
|
# Source: https://github.com/excalidraw/excalidraw
|
||||||
|
|
||||||
APP="Excalidraw"
|
APP="Excalidraw"
|
||||||
var_tags="${var_tags:-diagrams}"
|
TAGS="diagrams"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-3072}"
|
||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
|
|
@ -28,23 +28,36 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then
|
|
||||||
|
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
|
||||||
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
|
||||||
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
|
mv excalidraw-${RELEASE} /opt/excalidraw
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
|
||||||
cd /opt/excalidraw
|
cd /opt/excalidraw
|
||||||
$STD yarn
|
$STD yarn
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start excalidraw
|
systemctl start excalidraw
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf $temp_file
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
|
echo "${RELEASE}" >/opt/excalidraw_version.txt
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,41 +28,41 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then
|
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
|
||||||
msg_info "Stopping Apache2"
|
msg_info "Stopping Apache2"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Apache2"
|
msg_ok "Stopped Apache2"
|
||||||
|
|
||||||
msg_info "Backing up data"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
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
|
||||||
msg_ok "Backed up data"
|
cd /opt
|
||||||
|
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")
|
||||||
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
|
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly --exclude='storage'
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
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
|
||||||
chown -R www-data:www-data /opt/firefly
|
chown -R www-data:www-data /opt/firefly
|
||||||
find /opt/firefly/storage -type d -exec chmod 775 {} \;
|
chmod -R 775 /opt/firefly/storage
|
||||||
find /opt/firefly/storage -type f -exec chmod 664 {} \;
|
|
||||||
mkdir -p /opt/firefly/storage/framework/{cache/data,sessions,views}
|
|
||||||
$STD sudo -u www-data php /opt/firefly/artisan cache:clear
|
|
||||||
|
|
||||||
$STD php artisan migrate --seed --force
|
$STD php artisan migrate --seed --force
|
||||||
$STD php artisan cache:clear
|
$STD php artisan cache:clear
|
||||||
$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
|
||||||
msg_ok "Updated ${APP}"
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
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
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,22 +23,22 @@ 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
|
||||||
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "3.3.25"; then
|
RELEASE=$(curl -fsSL https://github.com/FlareSolverr/FlareSolverr/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
||||||
msg_info "Stopping service"
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
systemctl stop flaresolverr
|
systemctl stop flaresolverr
|
||||||
msg_ok "Stopped service"
|
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")
|
||||||
|
tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
|
||||||
rm -rf /opt/flaresolverr
|
rm flaresolverr_linux_x64.tar.gz
|
||||||
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.3.25" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
|
||||||
|
|
||||||
msg_info "Starting service"
|
|
||||||
systemctl start flaresolverr
|
systemctl start flaresolverr
|
||||||
msg_ok "Started service"
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,39 +20,51 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/fluid-calendar ]]; then
|
if [[ ! -d /opt/fluid-calendar ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop fluid-calendar.service
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
cp /opt/fluid-calendar/.env /opt/fluid.env
|
||||||
|
rm -rf /opt/fluid-calendar
|
||||||
|
tmp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
|
||||||
|
$STD unzip $tmp_file
|
||||||
|
mv ${APP}-${RELEASE}/ /opt/fluid-calendar
|
||||||
|
mv /opt/fluid.env /opt/fluid-calendar/.env
|
||||||
|
cd /opt/fluid-calendar
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
|
$STD npm install --legacy-peer-deps
|
||||||
|
$STD npm run prisma:generate
|
||||||
|
$STD npx prisma migrate deploy
|
||||||
|
$STD npm run build:os
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start fluid-calendar.service
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf $tmp_file
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop fluid-calendar
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
cp /opt/fluid-calendar/.env /opt/fluid.env
|
|
||||||
rm -rf /opt/fluid-calendar
|
|
||||||
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
|
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
|
||||||
mv /opt/fluid.env /opt/fluid-calendar/.env
|
|
||||||
cd /opt/fluid-calendar
|
|
||||||
export NEXT_TELEMETRY_DISABLED=1
|
|
||||||
$STD npm install --legacy-peer-deps
|
|
||||||
$STD npm run prisma:generate
|
|
||||||
$STD npx prisma migrate deploy
|
|
||||||
$STD npm run build:os
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start fluid-calendar
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,13 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop forgejo
|
systemctl stop forgejo
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
RELEASE=$(curl -fsSL https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//')
|
RELEASE=$(curl -fsSL https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//')
|
||||||
curl -fsSL "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" -o "forgejo-$RELEASE-linux-amd64"
|
curl -fsSL "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" -o "forgejo-$RELEASE-linux-amd64"
|
||||||
rm -rf /opt/forgejo/*
|
rm -rf /opt/forgejo/*
|
||||||
cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64
|
cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64
|
||||||
chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64
|
chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64
|
||||||
|
|
@ -44,9 +44,9 @@ function update_script() {
|
||||||
rm -rf forgejo-$RELEASE-linux-amd64
|
rm -rf forgejo-$RELEASE-linux-amd64
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start forgejo
|
systemctl start forgejo
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,16 +27,8 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_error "FreshRSS should be updated via the user interface."
|
||||||
if [ ! -x /opt/freshrss/cli/sensitive-log.sh ]; then
|
exit
|
||||||
msg_info "Fixing wrong permissions"
|
|
||||||
chmod +x /opt/freshrss/cli/sensitive-log.sh
|
|
||||||
systemctl restart apache2
|
|
||||||
msg_ok "Fixed wrong permissions"
|
|
||||||
else
|
|
||||||
msg_error "FreshRSS should be updated via the user interface."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,6 @@ function update_script() {
|
||||||
msg_error "Project directory does not exist: $PROJECT_DIR"
|
msg_error "Project directory does not exist: $PROJECT_DIR"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if ! command -v git &>/dev/null; then
|
|
||||||
$STD apt-get install -y git
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Stopping service $SERVICE_NAME"
|
msg_info "Stopping service $SERVICE_NAME"
|
||||||
systemctl stop "$SERVICE_NAME"
|
systemctl stop "$SERVICE_NAME"
|
||||||
|
|
|
||||||
29
ct/gatus.sh
29
ct/gatus.sh
|
|
@ -28,32 +28,39 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "gatus" "TwiN/gatus"; then
|
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
|
||||||
|
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"
|
||||||
|
|
||||||
if [[ :$PATH: != *":/usr/local/bin:"* ]]; then
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc
|
|
||||||
source ~/.bashrc
|
|
||||||
fi
|
|
||||||
|
|
||||||
mv /opt/gatus/config/config.yaml /opt
|
mv /opt/gatus/config/config.yaml /opt
|
||||||
rm -rf /opt/gatus
|
rm -rf /opt/gatus/*
|
||||||
fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
msg_info "Updating $APP"
|
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 /opt/config.yaml config
|
mv /opt/config.yaml config
|
||||||
msg_ok "Updated $APP"
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
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
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
37
ct/ghost.sh
37
ct/ghost.sh
|
|
@ -20,31 +20,26 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
msg_info "Updating ${APP} LXC"
|
||||||
|
|
||||||
if ! dpkg-query -W -f='${Status}' mariadb-server 2>/dev/null | grep -q "install ok installed"; then
|
if command -v ghost &>/dev/null; then
|
||||||
setup_mysql
|
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
|
||||||
fi
|
latest_version=$(npm show ghost-cli version)
|
||||||
NODE_VERSION="22" setup_nodejs
|
if [ "$current_version" != "$latest_version" ]; then
|
||||||
|
msg_info "Updating ${APP} from version v${current_version} to v${latest_version}"
|
||||||
msg_info "Updating ${APP} LXC"
|
$STD npm install -g ghost-cli@latest
|
||||||
if command -v ghost &>/dev/null; then
|
msg_ok "Updated Successfully"
|
||||||
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
|
else
|
||||||
latest_version=$(npm show ghost-cli version)
|
msg_ok "${APP} is already at v${current_version}"
|
||||||
if [ "$current_version" != "$latest_version" ]; then
|
fi
|
||||||
msg_info "Updating ${APP} from version v${current_version} to v${latest_version}"
|
|
||||||
$STD npm install -g ghost-cli@latest
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
else
|
||||||
msg_ok "${APP} is already at v${current_version}"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: lucasfell
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://ghostfol.io/
|
|
||||||
|
|
||||||
APP="Ghostfolio"
|
|
||||||
var_tags="${var_tags:-finance;investment}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-4096}"
|
|
||||||
var_disk="${var_disk:-8}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-13}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [[ ! -f /opt/ghostfolio/dist/apps/api/main.js ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "ghostfolio" "ghostfolio/ghostfolio"; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop ghostfolio
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Creating Backup"
|
|
||||||
tar -czf "/opt/ghostfolio_backup_$(date +%F).tar.gz" \
|
|
||||||
-C /opt \
|
|
||||||
--exclude="ghostfolio/node_modules" \
|
|
||||||
--exclude="ghostfolio/dist" \
|
|
||||||
ghostfolio
|
|
||||||
mv /opt/ghostfolio/.env /opt/env.backup
|
|
||||||
msg_ok "Backup Created"
|
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio"
|
|
||||||
|
|
||||||
msg_info "Updating Ghostfolio"
|
|
||||||
mv /opt/env.backup /opt/ghostfolio/.env
|
|
||||||
cd /opt/ghostfolio
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build:production
|
|
||||||
$STD npx prisma migrate deploy
|
|
||||||
msg_ok "Updated Ghostfolio"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start ghostfolio
|
|
||||||
msg_ok "Started Service"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
$STD npm cache clean --force
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3333${CL}"
|
|
||||||
|
|
@ -28,58 +28,9 @@ 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/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
|
||||||
|
|
||||||
APP_VERSION=$(grep -o '"version": *"[^"]*"' /opt/gitea-mirror/package.json | cut -d'"' -f4)
|
|
||||||
if [[ $APP_VERSION =~ ^2\. ]]; then
|
|
||||||
if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ VERSION 2.x DETECTED" --yesno \
|
|
||||||
"WARNING: Version $APP_VERSION detected!\n\nUpdating from version 2.x will CLEAR ALL CONFIGURATION.\n\nThis includes:\n• API tokens\n• User settings\n• Repository configurations\n• All custom settings\n\nDo you want to continue with the update process?" 15 70 --defaultno; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ FINAL CONFIRMATION" --yesno \
|
|
||||||
"FINAL WARNING: This update WILL clear all configuration!\n\nBEFORE PROCEEDING, please:\n\n• Copy API tokens to a safe location\n• Backup any custom configurations\n• Note down repository settings\n\nThis action CANNOT be undone!" 18 70 --defaultno; then
|
|
||||||
whiptail --backtitle "Gitea Mirror Update" --title "Update Cancelled" --msgbox "Update process cancelled. Please backup your configuration before proceeding." 8 60
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
whiptail --backtitle "Gitea Mirror Update" --title "Proceeding with Update" --msgbox \
|
|
||||||
"Proceeding with version $APP_VERSION update.\n\nAll configuration will be cleared as warned." 8 50
|
|
||||||
rm -rf /opt/gitea-mirror
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -f /opt/gitea-mirror.env ]]; then
|
|
||||||
msg_info "Detected old Enviroment, updating files"
|
|
||||||
APP_SECRET=$(openssl rand -base64 32)
|
|
||||||
HOST_IP=$(hostname -I | awk '{print $1}')
|
|
||||||
cat <<EOF >/opt/gitea-mirror.env
|
|
||||||
# See here for config options: https://github.com/RayLabsHQ/gitea-mirror/blob/main/docs/ENVIRONMENT_VARIABLES.md
|
|
||||||
NODE_ENV=production
|
|
||||||
HOST=0.0.0.0
|
|
||||||
PORT=4321
|
|
||||||
DATABASE_URL=sqlite://data/gitea-mirror.db
|
|
||||||
BETTER_AUTH_URL=http://${HOST_IP}:4321
|
|
||||||
BETTER_AUTH_SECRET=${APP_SECRET}
|
|
||||||
npm_package_version=${APP_VERSION}
|
|
||||||
EOF
|
|
||||||
rm /etc/systemd/system/gitea-mirror.service
|
|
||||||
cat <<EOF >/etc/systemd/system/gitea-mirror.service
|
|
||||||
[Unit]
|
|
||||||
Description=Gitea Mirror
|
|
||||||
After=network.target
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
WorkingDirectory=/opt/gitea-mirror
|
|
||||||
ExecStart=/usr/local/bin/bun dist/server/entry.mjs
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=10
|
|
||||||
EnvironmentFile=/opt/gitea-mirror.env
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
msg_ok "Old Enviroment fixed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"; then
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop gitea-mirror
|
systemctl stop gitea-mirror
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
@ -99,23 +50,25 @@ fi
|
||||||
rm -rf /opt/gitea-mirror
|
rm -rf /opt/gitea-mirror
|
||||||
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
|
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
|
||||||
|
|
||||||
msg_info "Updating and rebuilding ${APP}"
|
msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
|
||||||
cd /opt/gitea-mirror
|
cd /opt/gitea-mirror
|
||||||
$STD bun run setup
|
$STD bun run setup
|
||||||
$STD bun run build
|
$STD bun run build
|
||||||
APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
|
APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
|
||||||
|
sudo sed -i.bak "s|^Environment=npm_package_version=.*|Environment=npm_package_version=${APP_VERSION}|" /etc/systemd/system/gitea-mirror.service
|
||||||
sudo sed -i.bak "s|^npm_package_version=.*|npm_package_version=${APP_VERSION}|" /opt/gitea-mirror.env
|
msg_ok "Updated and rebuilt ${APP} to v${RELEASE}"
|
||||||
msg_ok "Updated and rebuilt ${APP}"
|
|
||||||
|
|
||||||
msg_info "Restoring Data"
|
msg_info "Restoring Data"
|
||||||
cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data
|
cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Restored Data"
|
msg_ok "Restored Data"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
systemctl daemon-reload
|
||||||
systemctl start gitea-mirror
|
systemctl start gitea-mirror
|
||||||
msg_ok "Service Started"
|
msg_ok "Service Started"
|
||||||
msg_ok "Update Successfully"
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
41
ct/gitea.sh
41
ct/gitea.sh
|
|
@ -20,29 +20,24 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
if [[ ! -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//')
|
||||||
if check_for_gh_release "gitea" "go-gitea/gitea"; then
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
msg_info "Stopping service"
|
FILENAME="gitea-$RELEASE-linux-amd64"
|
||||||
systemctl stop gitea
|
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $FILENAME
|
||||||
msg_ok "Service stopped"
|
systemctl stop gitea
|
||||||
|
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
|
systemctl start gitea
|
||||||
|
msg_ok "Updated $APP Successfully"
|
||||||
msg_info "Starting service"
|
exit
|
||||||
systemctl start gitea
|
|
||||||
msg_ok "Started service"
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
19
ct/glance.sh
19
ct/glance.sh
|
|
@ -28,18 +28,31 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "glance" "glanceapp/glance"; then
|
|
||||||
|
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
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop glance
|
systemctl stop glance
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
rm -f /opt/glance/glance
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-amd64.tar.gz"
|
cd /opt
|
||||||
|
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
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 communtiy-scripts ORG
|
|
||||||
# Author: Giovanni Pellerano (evilaliv3)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software
|
|
||||||
|
|
||||||
APP="GlobaLeaks"
|
|
||||||
var_tags="${var_tags:-whistleblowing-software}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-13}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -f /usr/sbin/globaleaks ]]; then
|
|
||||||
msg_error "No ${APP} installation found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt update
|
|
||||||
$STD apt -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN} ${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}${CL}"
|
|
||||||
|
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
|
||||||
21
ct/go2rtc.sh
21
ct/go2rtc.sh
|
|
@ -27,19 +27,14 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_info "Updating $APP"
|
||||||
if check_for_gh_release "go2rtc" "AlexxIT/go2rtc"; then
|
systemctl stop go2rtc
|
||||||
msg_info "Stopping service"
|
cd /opt/go2rtc
|
||||||
systemctl stop go2rtc
|
rm go2rtc_linux_amd64
|
||||||
msg_ok "Stopped service"
|
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o $(basename "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64")
|
||||||
|
chmod +x go2rtc_linux_amd64
|
||||||
fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64"
|
systemctl start go2rtc
|
||||||
|
msg_ok "Updated $APP"
|
||||||
msg_info "Starting service"
|
|
||||||
systemctl start go2rtc
|
|
||||||
msg_ok "Started service"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
54
ct/goaway.sh
54
ct/goaway.sh
|
|
@ -1,54 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/pommee/goaway
|
|
||||||
|
|
||||||
APP="GoAway"
|
|
||||||
var_tags="${var_tags:-network}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-13}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -d /opt/goaway ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "goaway" "pommee/goaway"; then
|
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop goaway
|
|
||||||
msg_ok "Stopped Services"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "goaway" "pommee/goaway" "prebuild" "latest" "/opt/goaway" "goaway_*_linux_amd64.tar.gz"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start goaway
|
|
||||||
msg_ok "Started Services"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
|
||||||
29
ct/gokapi.sh
29
ct/gokapi.sh
|
|
@ -20,26 +20,15 @@ color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/gokapi ]]; then
|
if [[ ! -d /opt/gokapi ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "gokapi" "Forceu/Gokapi"; then
|
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||||
msg_info "Stopping Service"
|
exit
|
||||||
systemctl stop gokapi
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "gokapi" "Forceu/Gokapi" "prebuild" "latest" "/opt/gokapi" "gokapi-linux_amd64.zip"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start gokapi
|
|
||||||
msg_ok "Started Service"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|
|
||||||
127
ct/gomft.sh
Normal file
127
ct/gomft.sh
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/StarFleetCPTN/GoMFT
|
||||||
|
|
||||||
|
APP="GoMFT"
|
||||||
|
var_tags="${var_tags:-backup}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d "/opt/gomft" ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
if ! dpkg -l | grep -q "^ii.*build-essential"; then
|
||||||
|
$STD apt-get install -y build-essential
|
||||||
|
fi
|
||||||
|
if [[ ! -f "/usr/bin/node" ]]; then
|
||||||
|
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
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest" | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop gomft
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
if ! command -v git >/dev/null 2>&1; then
|
||||||
|
$STD apt-get install -y git
|
||||||
|
fi
|
||||||
|
rm -f /opt/gomft/gomft
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
|
tar -xzf "$temp_file"
|
||||||
|
cp -rf "GoMFT-${RELEASE}"/* /opt/gomft/
|
||||||
|
cd /opt/gomft
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
|
||||||
|
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
|
||||||
|
# dirty hack to fix templ
|
||||||
|
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
|
||||||
|
package search
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/starfleetcptn/gomft/components/file_metadata"
|
||||||
|
"github.com/starfleetcptn/gomft/components/file_metadata/list"
|
||||||
|
)
|
||||||
|
|
||||||
|
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
|
||||||
|
<!-- Search Results -->
|
||||||
|
<div id="search-results">
|
||||||
|
if len(data.Files) > 0 {
|
||||||
|
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
|
||||||
|
Files: data.Files,
|
||||||
|
Page: data.Page,
|
||||||
|
Limit: data.Limit,
|
||||||
|
TotalCount: data.TotalCount,
|
||||||
|
TotalPages: data.TotalPages,
|
||||||
|
Filter: data.Filter,
|
||||||
|
SortBy: data.SortBy,
|
||||||
|
SortDir: data.SortDir,
|
||||||
|
}, "/files/search/partial", "#search-results-container")
|
||||||
|
} else {
|
||||||
|
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
|
||||||
|
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
|
||||||
|
</svg>
|
||||||
|
<p>No files found matching your search criteria.</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
$STD "$HOME"/go/bin/templ generate
|
||||||
|
export CGO_ENABLED=1
|
||||||
|
export GOOS=linux
|
||||||
|
$STD go build -o gomft
|
||||||
|
chmod +x /opt/gomft/gomft
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -f "$temp_file"
|
||||||
|
rm -rf "$HOME/GoMFT-v.${RELEASE}/"
|
||||||
|
msg_ok "Cleanup Complete"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start gomft
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
24
ct/gotify.sh
24
ct/gotify.sh
|
|
@ -27,18 +27,28 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "gotify" "gotify/server"; then
|
|
||||||
msg_info "Stopping Service"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/gotify/server/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
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop gotify
|
systemctl stop gotify
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "gotify" "gotify/server" "prebuild" "latest" "/opt/gotify" "gotify-linux-amd64.zip"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
chmod +x /opt/gotify/gotify-linux-amd64
|
cd /opt/gotify
|
||||||
|
curl -fsSL "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip" -o $(basename "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip")
|
||||||
|
$STD unzip -o gotify-linux-amd64.zip
|
||||||
|
rm -rf gotify-linux-amd64.zip
|
||||||
|
chmod +x gotify-linux-amd64
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start gotify
|
systemctl start gotify
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||||
# Source: https://graylog.org/
|
# Source: https://graylog.org/
|
||||||
|
|
||||||
APP="Graylog"
|
APP="Graylog"
|
||||||
var_tags="${var_tags:-logging}"
|
TAGS="logging"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-8192}"
|
var_ram="${var_ram:-8192}"
|
||||||
var_disk="${var_disk:-30}"
|
var_disk="${var_disk:-30}"
|
||||||
|
|
|
||||||
60
ct/grist.sh
60
ct/grist.sh
|
|
@ -1,8 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: cfurrow | Co-Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/gristlabs/grist-core
|
# Source: https://github.com/gristlabs/grist-core
|
||||||
|
|
||||||
APP="Grist"
|
APP="Grist"
|
||||||
|
|
@ -29,34 +26,57 @@ function update_script() {
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "grist" "gristlabs/grist-core"; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Stopping Service"
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
|
||||||
|
msg_info "Stopping ${APP} Service"
|
||||||
systemctl stop grist
|
systemctl stop grist
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped ${APP} Service"
|
||||||
|
|
||||||
msg_info "Creating backup"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
rm -rf /opt/grist_bak
|
|
||||||
|
cd /opt
|
||||||
|
rm -rf grist_bak
|
||||||
mv grist grist_bak
|
mv grist grist_bak
|
||||||
msg_ok "Backup created"
|
curl -fsSL "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip")
|
||||||
|
$STD unzip v$RELEASE.zip
|
||||||
|
mv grist-core-${RELEASE} grist
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
mkdir -p grist/docs
|
mkdir -p grist/docs
|
||||||
cp -n /opt/grist_bak/.env /opt/grist/.env
|
|
||||||
cp -r /opt/grist_bak/docs/* /opt/grist/docs/
|
cp -n grist_bak/.env grist/.env || true
|
||||||
cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
|
cp -r grist_bak/docs/* grist/docs/ || true
|
||||||
cp /opt/grist_bak/landing.db /opt/grist/landing.db
|
cp grist_bak/grist-sessions.db grist/grist-sessions.db || true
|
||||||
|
cp grist_bak/landing.db grist/landing.db || true
|
||||||
|
|
||||||
|
cd grist
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Building"
|
||||||
$STD yarn run build:prod
|
$STD yarn run build:prod
|
||||||
|
msg_ok "Done building"
|
||||||
|
|
||||||
|
msg_info "Installing Python"
|
||||||
$STD yarn run install:python
|
$STD yarn run install:python
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Installed Python"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP} Service"
|
||||||
systemctl start grist
|
systemctl start grist
|
||||||
msg_ok "Started Service"
|
msg_ok "Started ${APP} Service"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/v$RELEASE.zip
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully!\n"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
21
ct/grocy.sh
21
ct/grocy.sh
|
|
@ -27,15 +27,20 @@ function update_script() {
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
php_ver=$(php -v | head -n 1 | awk '{print $2}')
|
php_version=$(php -v | head -n 1 | awk '{print $2}')
|
||||||
if [[ ! $php_ver == "8.3"* ]]; then
|
if [[ ! $php_version == "8.3"* ]]; then
|
||||||
PHP_VERSION="8.3" PHP_MODULE="sqlite3,bz2" PHP_APACHE="yes" setup_php
|
msg_info "Updating PHP"
|
||||||
fi
|
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
|
||||||
if check_for_gh_release "grocy" "grocy/grocy"; then
|
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
|
||||||
msg_info "Updating ${APP}"
|
apt-get update
|
||||||
bash /var/www/html/update.sh
|
apt-get install -y php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl,sqlite3,fpm,gd,zip,xml}
|
||||||
msg_ok "Updated Successfully"
|
systemctl reload apache2
|
||||||
|
apt autoremove
|
||||||
|
msg_ok "Updated PHP"
|
||||||
fi
|
fi
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
bash /var/www/html/update.sh
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: HydroshieldMKII
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/HydroshieldMKII/Guardian
|
|
||||||
|
|
||||||
APP="Guardian"
|
|
||||||
var_tags="${var_tags:-media;monitoring}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-6}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-13}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [[ ! -d "/opt/guardian" ]] ; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "guardian" "HydroshieldMKII/Guardian" ; then
|
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop guardian-backend guardian-frontend
|
|
||||||
msg_ok "Stopped Services"
|
|
||||||
|
|
||||||
if [[ -f "/opt/guardian/backend/plex-guard.db" ]] ; then
|
|
||||||
msg_info "Backing up Database"
|
|
||||||
cp "/opt/guardian/backend/plex-guard.db" "/tmp/plex-guard.db.backup"
|
|
||||||
msg_ok "Backed up Database"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[[ -f "/opt/guardian/.env" ]] && cp "/opt/guardian/.env" "/opt"
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian"
|
|
||||||
[[ -f "/opt/.env" ]] && mv "/opt/.env" "/opt/guardian"
|
|
||||||
|
|
||||||
if [[ -f "/tmp/plex-guard.db.backup" ]] ; then
|
|
||||||
msg_info "Restoring Database"
|
|
||||||
cp "/tmp/plex-guard.db.backup" "/opt/guardian/backend/plex-guard.db"
|
|
||||||
rm "/tmp/plex-guard.db.backup"
|
|
||||||
msg_ok "Restored Database"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating Guardian"
|
|
||||||
cd /opt/guardian/backend
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build
|
|
||||||
|
|
||||||
cd /opt/guardian/frontend
|
|
||||||
$STD npm ci
|
|
||||||
export DEPLOYMENT_MODE=standalone
|
|
||||||
$STD npm run build
|
|
||||||
msg_ok "Updated Guardian"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start guardian-backend guardian-frontend
|
|
||||||
msg_ok "Started Services"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user