mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 18:32:51 +00:00
Compare commits
131 Commits
2024-11-26
...
2024-12-13
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bcc6342f83 | ||
|
|
ca902c50fb | ||
|
|
69fe688418 | ||
|
|
2d9fcbb635 | ||
|
|
0573adc83c | ||
|
|
c0cf76f0d5 | ||
|
|
77d2df5a0f | ||
|
|
82ba836743 | ||
|
|
8c1b48453c | ||
|
|
ae0684b696 | ||
|
|
aab63c8db2 | ||
|
|
e7ac005592 | ||
|
|
6fb6c58454 | ||
|
|
0d63e66379 | ||
|
|
cfb755a862 | ||
|
|
4a60a29f1d | ||
|
|
ec27945abd | ||
|
|
d6ead654ad | ||
|
|
4f66476de5 | ||
|
|
e4354c1d53 | ||
|
|
8a6ea7cbac | ||
|
|
96d691c862 | ||
|
|
82ee63a6db | ||
|
|
102669cd11 | ||
|
|
ae120c1e23 | ||
|
|
c056dd97ea | ||
|
|
5b2cbd3e99 | ||
|
|
cadae9796e | ||
|
|
9eb5cc022a | ||
|
|
52898b4edf | ||
|
|
e45aba86bd | ||
|
|
be4e6503d7 | ||
|
|
59deaa0a19 | ||
|
|
a4803d178d | ||
|
|
259203ee51 | ||
|
|
944328625a | ||
|
|
3d38ad0288 | ||
|
|
c46f15cdc1 | ||
|
|
e2aa5fe627 | ||
|
|
493c2c931c | ||
|
|
ce545bd499 | ||
|
|
0ba2ea9183 | ||
|
|
cff3fa8696 | ||
|
|
871fd6517d | ||
|
|
3a876c99ef | ||
|
|
5c3fe0e802 | ||
|
|
3ec3478b2d | ||
|
|
67524454d7 | ||
|
|
ec27e92833 | ||
|
|
fa20526525 | ||
|
|
4f5712097b | ||
|
|
3c388ef157 | ||
|
|
df99c30ab3 | ||
|
|
6d307f07a9 | ||
|
|
0d472640ff | ||
|
|
54dd0ba420 | ||
|
|
47ecc7a006 | ||
|
|
4bb5741707 | ||
|
|
d6ff28abf5 | ||
|
|
c188b54398 | ||
|
|
b8e2de30a5 | ||
|
|
f710b541e4 | ||
|
|
9c722be967 | ||
|
|
b9f889c6c3 | ||
|
|
baa29fb096 | ||
|
|
e74f6f8efe | ||
|
|
9c8223d64e | ||
|
|
336ea19b39 | ||
|
|
1ca99781ff | ||
|
|
342e145273 | ||
|
|
85b80393bd | ||
|
|
53807c9633 | ||
|
|
8301204cc0 | ||
|
|
70952b3db3 | ||
|
|
e9506e3c0c | ||
|
|
869ddc0d5e | ||
|
|
11d1f0f981 | ||
|
|
c75148ec51 | ||
|
|
8c7b72e71b | ||
|
|
3f1cde865e | ||
|
|
ddc867ea4e | ||
|
|
78948b08cf | ||
|
|
f0936500d3 | ||
|
|
fe4b8fed8a | ||
|
|
ec273ba221 | ||
|
|
d5d5a3d3a3 | ||
|
|
617b42dd8e | ||
|
|
274867dc11 | ||
|
|
17e5d69052 | ||
|
|
c9148547ef | ||
|
|
942ad74b73 | ||
|
|
6fb5512878 | ||
|
|
b191579f11 | ||
|
|
bc10a3fa17 | ||
|
|
dc49ad1133 | ||
|
|
b15a59315e | ||
|
|
b9fe3855b0 | ||
|
|
74b4b5150c | ||
|
|
689122b14a | ||
|
|
2fbd5f5068 | ||
|
|
40c70192af | ||
|
|
5f3985cd0a | ||
|
|
8901aa4d7f | ||
|
|
862b72ab39 | ||
|
|
b328eedc75 | ||
|
|
543142ebf1 | ||
|
|
e30c413ea5 | ||
|
|
d7102d1233 | ||
|
|
f7087e57f9 | ||
|
|
b17ede296c | ||
|
|
ae49d1d8d7 | ||
|
|
03be08be63 | ||
|
|
000f206d90 | ||
|
|
e9ebfffb57 | ||
|
|
11147e4482 | ||
|
|
e786b09199 | ||
|
|
0afeac4266 | ||
|
|
1558b0d875 | ||
|
|
1cb822b34c | ||
|
|
24cfb32c3d | ||
|
|
2599bff463 | ||
|
|
e40de17874 | ||
|
|
e8719df21b | ||
|
|
257bccad6c | ||
|
|
4e66916ebc | ||
|
|
1be91e9fad | ||
|
|
c098031a5a | ||
|
|
928a5cb9e5 | ||
|
|
9d72b5872a | ||
|
|
60b9103a34 | ||
|
|
a2ae582992 |
71
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
71
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -5,44 +5,64 @@ body:
|
|||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
**IMPORTANT:** Failure to comply with the following guidelines may result in immediate closure.
|
# 🐞 **Script Issue Report**
|
||||||
- Prior to submitting, kindly search the closed issues to check if the problem you are reporting has already been addressed and resolved. If you come across a closed issue that pertains to your problem, please leave a comment on that issue instead of creating a new one.
|
Thank you for taking the time to report an issue! Please provide as much detail as possible to help us address the problem efficiently.
|
||||||
- If the default Linux distribution is not adhered to, script support will be discontinued.
|
|
||||||
- When encountering the error message `[ERROR] in line 23: exit code *: while executing command "$@" > /dev/null 2>&1`, make sure to run the script in verbose mode to accurately determine the underlying issue.
|
## ⚠️ **IMPORTANT**
|
||||||
- For suggestions, questions, or feature/script requests, please use the [Discussions section.](https://github.com/community-scripts/ProxmoxVE/discussions)
|
- 🔍 **Search first:** Before submitting, check if the issue has already been reported or resolved in [closed issues](https://github.com/community-scripts/ProxmoxVE/issues?q=is%3Aissue+is%3Aclosed). If found, comment on that issue instead of creating a new one.
|
||||||
|
Alternatively, check the **[Discussions](https://github.com/community-scripts/ProxmoxVE/discussions)** under the *"Announcement"* or *"Guide"* categories for relevant information.
|
||||||
|
- 🛠️ **Supported environments only:** Ensure you are using a default Linux distribution. Custom setups may not be supported.
|
||||||
|
- 🔎 If you encounter `[ERROR] in line 23: exit code *: while executing command "$@" > /dev/null 2>&1`, rerun the script with verbose mode before submitting the issue.
|
||||||
|
- 💡 For general questions, feature requests, or suggestions, use the [Discussions section](https://github.com/community-scripts/ProxmoxVE/discussions).
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: guidelines
|
id: guidelines
|
||||||
attributes:
|
attributes:
|
||||||
label: Please verify that you have read and understood the guidelines.
|
label: ✅ Have you read and understood the above guidelines?
|
||||||
placeholder: "yes"
|
placeholder: "yes"
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: input
|
||||||
id: bug
|
id: script_name
|
||||||
attributes:
|
attributes:
|
||||||
label: A clear and concise description of the issue.
|
label: 📜 What is the name of the script you are using?
|
||||||
|
placeholder: "e.g., NextcloudPi, Zigbee2MQTT"
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: script_command
|
||||||
|
attributes:
|
||||||
|
label: 📂 What was the exact command used to execute the script?
|
||||||
|
placeholder: "e.g., bash -c \"$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/zigbee2mqtt.sh)\" or \"update\""
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: issue_description
|
||||||
|
attributes:
|
||||||
|
label: 📝 Provide a clear and concise description of the issue.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
attributes:
|
attributes:
|
||||||
label: What settings are you currently utilizing?
|
label: ⚙️ What settings are you using?
|
||||||
options:
|
options:
|
||||||
- label: Default Settings
|
- label: Default Settings
|
||||||
- label: Advanced Settings
|
- label: Advanced Settings
|
||||||
|
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: "If using Advanced Settings, please try Default Settings before creating an issue."
|
value: "💡 **Tip:** If you are using Advanced Settings, please test with Default Settings before submitting an issue."
|
||||||
|
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: distribution
|
id: linux_distribution
|
||||||
attributes:
|
attributes:
|
||||||
label: Which Linux distribution are you employing?
|
label: 🖥️ Which Linux distribution are you using?
|
||||||
options:
|
options:
|
||||||
-
|
-
|
||||||
- Alpine
|
- Alpine
|
||||||
@@ -51,21 +71,30 @@ body:
|
|||||||
- Ubuntu 20.04
|
- Ubuntu 20.04
|
||||||
- Ubuntu 22.04
|
- Ubuntu 22.04
|
||||||
- Ubuntu 24.04
|
- Ubuntu 24.04
|
||||||
|
- Ubuntu 24.10
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: screenshot
|
id: steps_to_reproduce
|
||||||
attributes:
|
attributes:
|
||||||
label: If relevant, including screenshots or a code block can be helpful in clarifying the issue.
|
label: 🔄 Steps to reproduce the issue.
|
||||||
placeholder: "Code blocks begin and conclude by enclosing the code with three backticks (```) above and below it."
|
placeholder: "e.g., Step 1: ..., Step 2: ..."
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: reproduce
|
id: error_output
|
||||||
attributes:
|
attributes:
|
||||||
label: Please provide detailed steps to reproduce the issue.
|
label: ❌ Paste the full error output (if available).
|
||||||
placeholder: "First do this, then this ..."
|
placeholder: "Include any relevant logs or error messages."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional_context
|
||||||
|
attributes:
|
||||||
|
label: 🖼️ Additional context (optional).
|
||||||
|
placeholder: "Include screenshots, code blocks (use triple backticks ```), or any other relevant information."
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
48
.github/pull_request_template.md
vendored
48
.github/pull_request_template.md
vendored
@@ -1,31 +1,39 @@
|
|||||||
> [!NOTE]
|
> **🛠️ Note:**
|
||||||
> We are meticulous when it comes to merging code into the main branch, so please understand that we may reject pull requests that do not meet the project's standards. It's never personal. Also, game-related scripts have a lower chance of being merged.
|
> We are meticulous about merging code into the main branch, so please understand that pull requests not meeting the project's standards may be rejected. It's never personal!
|
||||||
|
> 🎮 **Note for game-related scripts:** These have a lower likelihood of being merged.
|
||||||
|
|
||||||
## Description
|
---
|
||||||
|
|
||||||
|
## ✍️ Description
|
||||||
Provide a summary of the changes made and/or reference the issue being addressed.
|
Provide a summary of the changes made and/or reference the issue being addressed.
|
||||||
|
|
||||||
Fixes # (issue)
|
-
|
||||||
|
|
||||||
## Type of change
|
- - -
|
||||||
Please check the relevant option(s):
|
|
||||||
|
|
||||||
- [ ] Bug fix (non-breaking change that resolves an issue)
|
- Related Issue: # (issue number, if applicable)
|
||||||
- [ ] New feature (non-breaking change that adds functionality)
|
- Related PR: # (if applicable)
|
||||||
- [ ] Breaking change (a fix or feature that would cause existing functionality to change unexpectedly)
|
- Related Discussion: [Link](https://github.com/community-scripts/ProxmoxVE/discussions)
|
||||||
- [ ] New script (a fully functional and thoroughly tested script or set of scripts.)
|
|
||||||
|
|
||||||
## Prerequisites
|
---
|
||||||
The following efforts must be made for the PR to be considered. Please check when completed:
|
|
||||||
- [ ] Self-review performed (I have reviewed my code, ensuring it follows established patterns and conventions)
|
## 🛠️ Type of Change
|
||||||
- [ ] Testing performed (I have tested my changes, ensuring everything works as expected)
|
Please check the relevant options:
|
||||||
|
- [ ] Bug fix (non-breaking change that resolves an issue)
|
||||||
|
- [ ] New feature (non-breaking change that adds functionality)
|
||||||
|
- [ ] Breaking change (fix or feature that would cause existing functionality to change unexpectedly)
|
||||||
|
- [ ] New script (a fully functional and thoroughly tested script or set of scripts)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Prerequisites
|
||||||
|
The following steps must be completed for the pull request to be considered:
|
||||||
|
- [ ] Self-review performed (I have reviewed my code to ensure it follows established patterns and conventions.)
|
||||||
|
- [ ] Testing performed (I have thoroughly tested my changes and verified expected functionality.)
|
||||||
- [ ] Documentation updated (I have updated any relevant documentation)
|
- [ ] Documentation updated (I have updated any relevant documentation)
|
||||||
|
|
||||||
## Additional Information (optional)
|
---
|
||||||
Provide any additional context or screenshots about the feature or fix here.
|
|
||||||
|
|
||||||
|
## 📋 Additional Information (optional)
|
||||||
|
Provide any extra context or screenshots about the feature or fix here.
|
||||||
|
|
||||||
## Related Pull Requests / Discussions
|
|
||||||
|
|
||||||
If there are other pull requests or discussions related to this change, please link them here:
|
|
||||||
- Related PR #
|
|
||||||
|
|||||||
1
.github/workflows/changelog-pr.yml
vendored
1
.github/workflows/changelog-pr.yml
vendored
@@ -63,6 +63,7 @@ jobs:
|
|||||||
const { data: pulls } = await github.rest.pulls.list({
|
const { data: pulls } = await github.rest.pulls.list({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
|
base: "main",
|
||||||
state: "closed",
|
state: "closed",
|
||||||
sort: "updated",
|
sort: "updated",
|
||||||
direction: "desc",
|
direction: "desc",
|
||||||
|
|||||||
79
.github/workflows/deploy-pages.yml
vendored
79
.github/workflows/deploy-pages.yml
vendored
@@ -1,79 +0,0 @@
|
|||||||
# Sample workflow for building and deploying a Next.js site to GitHub Pages
|
|
||||||
#
|
|
||||||
# To get started with Next.js see: https://nextjs.org/docs/getting-started
|
|
||||||
#
|
|
||||||
name: Deploy Next.js site to Pages
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: ["main"]
|
|
||||||
paths:
|
|
||||||
- frontend/**
|
|
||||||
- json/**
|
|
||||||
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pages: write
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: "pages"
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: frontend # Set default working directory for all run steps
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Detect package manager
|
|
||||||
id: detect-package-manager
|
|
||||||
run: |
|
|
||||||
if [ -f "${{ github.workspace }}/frontend/yarn.lock" ]; then
|
|
||||||
echo "manager=yarn" >> $GITHUB_OUTPUT
|
|
||||||
echo "command=install" >> $GITHUB_OUTPUT
|
|
||||||
echo "runner=yarn" >> $GITHUB_OUTPUT
|
|
||||||
exit 0
|
|
||||||
elif [ -f "${{ github.workspace }}/frontend/package.json" ]; then
|
|
||||||
echo "manager=npm" >> $GITHUB_OUTPUT
|
|
||||||
echo "command=ci" >> $GITHUB_OUTPUT
|
|
||||||
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo "Unable to determine package manager"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
- name: Setup Node
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: "20"
|
|
||||||
cache: ${{ steps.detect-package-manager.outputs.manager }}
|
|
||||||
cache-dependency-path: frontend/package-lock.json # Specify the path to package-lock.json
|
|
||||||
- name: Setup Pages
|
|
||||||
uses: actions/configure-pages@v5
|
|
||||||
with:
|
|
||||||
static_site_generator: next
|
|
||||||
- name: Install dependencies
|
|
||||||
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} --legacy-peer-deps
|
|
||||||
- name: Build with Next.js
|
|
||||||
run: ${{ steps.detect-package-manager.outputs.runner }} next build
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-pages-artifact@v3
|
|
||||||
with:
|
|
||||||
path: frontend/out
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
environment:
|
|
||||||
name: github-pages
|
|
||||||
url: ${{ steps.deployment.outputs.page_url }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
steps:
|
|
||||||
- name: Deploy to GitHub Pages
|
|
||||||
id: deployment
|
|
||||||
uses: actions/deploy-pages@v4
|
|
||||||
78
.github/workflows/frontend-cicd.yml
vendored
Normal file
78
.github/workflows/frontend-cicd.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# Based on https://github.com/actions/starter-workflows/blob/main/pages/nextjs.yml
|
||||||
|
|
||||||
|
name: Frontend CI/CD
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["main"]
|
||||||
|
paths:
|
||||||
|
- frontend/**
|
||||||
|
- json/**
|
||||||
|
|
||||||
|
pull_request:
|
||||||
|
branches: ["main"]
|
||||||
|
types: [opened, synchronize, reopened, edited]
|
||||||
|
paths:
|
||||||
|
- frontend/**
|
||||||
|
- json/**
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: pages-${{ github.ref }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: frontend # Set default working directory for all run steps
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "20"
|
||||||
|
cache: npm
|
||||||
|
cache-dependency-path: frontend/package-lock.json
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci --prefer-offline --legacy-peer-deps
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm run test
|
||||||
|
|
||||||
|
- name: Configure Next.js for pages
|
||||||
|
uses: actions/configure-pages@v5
|
||||||
|
with:
|
||||||
|
static_site_generator: next
|
||||||
|
|
||||||
|
- name: Build with Next.js
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
uses: actions/upload-pages-artifact@v3
|
||||||
|
with:
|
||||||
|
path: frontend/out
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
steps:
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v4
|
||||||
214
CHANGELOG.md
214
CHANGELOG.md
@@ -16,6 +16,220 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||||
|
|
||||||
|
## 2024-12-13
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix Keycloak Update Function [@MickLesk](https://github.com/MickLesk) ([#762](https://github.com/community-scripts/ProxmoxVE/pull/762))
|
||||||
|
- Fix config bug in Alpine Vaultwarden [@havardthom](https://github.com/havardthom) ([#775](https://github.com/community-scripts/ProxmoxVE/pull/775))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Change MISC from red to green [@MickLesk](https://github.com/MickLesk) ([#815](https://github.com/community-scripts/ProxmoxVE/pull/815))
|
||||||
|
- Update some JSON Files for Website [@MickLesk](https://github.com/MickLesk) ([#812](https://github.com/community-scripts/ProxmoxVE/pull/812))
|
||||||
|
- Update Notes & Documentation for Proxmox Backup Server [@MickLesk](https://github.com/MickLesk) ([#804](https://github.com/community-scripts/ProxmoxVE/pull/804))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- Github: Optimize Issue Template & PR Template [@MickLesk](https://github.com/MickLesk) ([#802](https://github.com/community-scripts/ProxmoxVE/pull/802))
|
||||||
|
|
||||||
|
## 2024-12-12
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Update jellyfin.sh / Fix infinite loop [@gerpo](https://github.com/gerpo) ([#792](https://github.com/community-scripts/ProxmoxVE/pull/792))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Fix port and website in nextcloudpi.json [@PhoenixEmik](https://github.com/PhoenixEmik) ([#790](https://github.com/community-scripts/ProxmoxVE/pull/790))
|
||||||
|
- Add post-install note to mqtt.json [@havardthom](https://github.com/havardthom) ([#783](https://github.com/community-scripts/ProxmoxVE/pull/783))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- Filter pull requests on main branch in changelog-pr.yml [@havardthom](https://github.com/havardthom) ([#793](https://github.com/community-scripts/ProxmoxVE/pull/793))
|
||||||
|
- Fix Z-Wave JS UI Breaking Change in CHANGELOG.md [@havardthom](https://github.com/havardthom) ([#781](https://github.com/community-scripts/ProxmoxVE/pull/781))
|
||||||
|
|
||||||
|
## 2024-12-09
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix PostgreSQL password bug in Umami install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#750](https://github.com/community-scripts/ProxmoxVE/pull/750))
|
||||||
|
|
||||||
|
## 2024-12-08
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Use MongoDB 4.4 in Unifi for non-AVX users [@havardthom](https://github.com/havardthom) ([#691](https://github.com/community-scripts/ProxmoxVE/pull/691))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Move homarr to Dashboards section [@CrazyWolf13](https://github.com/CrazyWolf13) ([#740](https://github.com/community-scripts/ProxmoxVE/pull/740))
|
||||||
|
|
||||||
|
## 2024-12-07
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Zigbee2MQTT: Remove dev branch choice until v2.0.0 release [@havardthom](https://github.com/havardthom) ([#702](https://github.com/community-scripts/ProxmoxVE/pull/702))
|
||||||
|
- Fix Hoarder build failure by installing Chromium stable [@vhsdream](https://github.com/vhsdream) ([#723](https://github.com/community-scripts/ProxmoxVE/pull/723))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Bugfix: Include script name in website search [@havardthom](https://github.com/havardthom) ([#731](https://github.com/community-scripts/ProxmoxVE/pull/731))
|
||||||
|
|
||||||
|
### ❔ Unlabelled
|
||||||
|
|
||||||
|
- Fix broken build.func [@havardthom](https://github.com/havardthom) ([#736](https://github.com/community-scripts/ProxmoxVE/pull/736))
|
||||||
|
|
||||||
|
## 2024-12-06
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix bugs in Komga update [@DysfunctionalProgramming](https://github.com/DysfunctionalProgramming) ([#717](https://github.com/community-scripts/ProxmoxVE/pull/717))
|
||||||
|
- Bookstack: Fix Update function composer [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#700](https://github.com/community-scripts/ProxmoxVE/pull/700))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- fix: note component in json-editor getting out of focus when typing and revert theme switch animation [@BramSuurdje](https://github.com/BramSuurdje) ([#706](https://github.com/community-scripts/ProxmoxVE/pull/706))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- Update frontend CI/CD workflow [@havardthom](https://github.com/havardthom) ([#703](https://github.com/community-scripts/ProxmoxVE/pull/703))
|
||||||
|
|
||||||
|
## 2024-12-05
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- PostgreSQL: Change authentication method from peer to md5 for UNIX sockets [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#650](https://github.com/community-scripts/ProxmoxVE/pull/650))
|
||||||
|
- Fix stdout in unifi.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#688](https://github.com/community-scripts/ProxmoxVE/pull/688))
|
||||||
|
- Fix `rm` bug in Vikunja update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#692](https://github.com/community-scripts/ProxmoxVE/pull/692))
|
||||||
|
|
||||||
|
## 2024-12-04
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Update Spelling 'Environment' in nginxproxymanager [@MathijsG](https://github.com/MathijsG) ([#676](https://github.com/community-scripts/ProxmoxVE/pull/676))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Update homepage.json documentation and website links [@patchmonkey](https://github.com/patchmonkey) ([#668](https://github.com/community-scripts/ProxmoxVE/pull/668))
|
||||||
|
|
||||||
|
## 2024-12-03
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: Onedev [@quantumryuu](https://github.com/quantumryuu) ([#612](https://github.com/community-scripts/ProxmoxVE/pull/612))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Script Update: SnipeIT [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#641](https://github.com/community-scripts/ProxmoxVE/pull/641))
|
||||||
|
|
||||||
|
## 2024-12-02
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: Hoarder LXC [@vhsdream](https://github.com/vhsdream) ([#567](https://github.com/community-scripts/ProxmoxVE/pull/567))
|
||||||
|
- New script: SnipeIT LXC [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#538](https://github.com/community-scripts/ProxmoxVE/pull/538))
|
||||||
|
- New Script: Glance [@quantumryuu](https://github.com/quantumryuu) ([#595](https://github.com/community-scripts/ProxmoxVE/pull/595))
|
||||||
|
- New script: Unbound LXC [@wimb0](https://github.com/wimb0) ([#547](https://github.com/community-scripts/ProxmoxVE/pull/547))
|
||||||
|
- New script: Mylar3 LXC [@davalanche](https://github.com/davalanche) ([#554](https://github.com/community-scripts/ProxmoxVE/pull/554))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Stirling-PDF: replace dependency for v0.35.0 and add check and fix in stirling-pdf.sh [@vhsdream](https://github.com/vhsdream) ([#614](https://github.com/community-scripts/ProxmoxVE/pull/614))
|
||||||
|
- qbittorrent: do not override the configuration port in systemd [@zdraganov](https://github.com/zdraganov) ([#618](https://github.com/community-scripts/ProxmoxVE/pull/618))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- chore: Update unbound logo to have only the actual logo [@BramSuurdje](https://github.com/BramSuurdje) ([#648](https://github.com/community-scripts/ProxmoxVE/pull/648))
|
||||||
|
- fix: vaultwarden info mismatch [@BramSuurdje](https://github.com/BramSuurdje) ([#645](https://github.com/community-scripts/ProxmoxVE/pull/645))
|
||||||
|
- Wallos json fix [@quantumryuu](https://github.com/quantumryuu) ([#630](https://github.com/community-scripts/ProxmoxVE/pull/630))
|
||||||
|
|
||||||
|
## 2024-11-30
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Convert line endings in the-lounge.sh [@jamezpolley](https://github.com/jamezpolley) ([#599](https://github.com/community-scripts/ProxmoxVE/pull/599))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- add some Information for Monitor-All Script [@MickLesk](https://github.com/MickLesk) ([#605](https://github.com/community-scripts/ProxmoxVE/pull/605))
|
||||||
|
|
||||||
|
## 2024-11-29
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: The Lounge IRC [@quantumryuu](https://github.com/quantumryuu) ([#571](https://github.com/community-scripts/ProxmoxVE/pull/571))
|
||||||
|
- New Script: LubeLogger [@quantumryuu](https://github.com/quantumryuu) ([#574](https://github.com/community-scripts/ProxmoxVE/pull/574))
|
||||||
|
- New Script: Inspircd [@quantumryuu](https://github.com/quantumryuu) ([#576](https://github.com/community-scripts/ProxmoxVE/pull/576))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix msg_error on zwave-js-ui [@MickLesk](https://github.com/MickLesk) ([#585](https://github.com/community-scripts/ProxmoxVE/pull/585))
|
||||||
|
- Fix Kimai Apache2 Rights [@MickLesk](https://github.com/MickLesk) ([#577](https://github.com/community-scripts/ProxmoxVE/pull/577))
|
||||||
|
|
||||||
|
## 2024-11-28
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Fix Z-Wave JS UI script [@MickLesk](https://github.com/MickLesk) ([#546](https://github.com/community-scripts/ProxmoxVE/pull/546))
|
||||||
|
- [Migration guide](https://github.com/community-scripts/ProxmoxVE/discussions/635)
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Add vitest, add json validation tests, fix broken json files [@havardthom](https://github.com/havardthom) ([#566](https://github.com/community-scripts/ProxmoxVE/pull/566))
|
||||||
|
- Add update script to Pocketbase [@dsiebel](https://github.com/dsiebel) ([#535](https://github.com/community-scripts/ProxmoxVE/pull/535))
|
||||||
|
- Fix MongoDB install in Unifi script [@havardthom](https://github.com/havardthom) ([#564](https://github.com/community-scripts/ProxmoxVE/pull/564))
|
||||||
|
- Remove changing DISK_REF for zfspool mikrotik-routeros.sh [@tjcomserv](https://github.com/tjcomserv) ([#529](https://github.com/community-scripts/ProxmoxVE/pull/529))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Show Changelog on Mobile Devices [@MickLesk](https://github.com/MickLesk) ([#558](https://github.com/community-scripts/ProxmoxVE/pull/558))
|
||||||
|
|
||||||
|
## 2024-11-27
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Zabbix: Use Agent2 as Default | Update Script added | some other Improvements [@MickLesk](https://github.com/MickLesk) ([#527](https://github.com/community-scripts/ProxmoxVE/pull/527))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix: install mosquitto from mosquitto repo [@dsiebel](https://github.com/dsiebel) ([#534](https://github.com/community-scripts/ProxmoxVE/pull/534))
|
||||||
|
- Patch Netbird Script | Container Boot-Check | Debian/Ubuntu Only [@MickLesk](https://github.com/MickLesk) ([#528](https://github.com/community-scripts/ProxmoxVE/pull/528))
|
||||||
|
- Install MongoDB 4.2 for non-AVX CPUs in Unifi LXC [@ColinOppenheim](https://github.com/ColinOppenheim) ([#319](https://github.com/community-scripts/ProxmoxVE/pull/319))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Fix json error in zabbix.json [@havardthom](https://github.com/havardthom) ([#543](https://github.com/community-scripts/ProxmoxVE/pull/543))
|
||||||
|
- Fix another json error in add-netbird-lxc.json [@havardthom](https://github.com/havardthom) ([#545](https://github.com/community-scripts/ProxmoxVE/pull/545))
|
||||||
|
|
||||||
## 2024-11-26
|
## 2024-11-26
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ echo -e "Loading..."
|
|||||||
APP="Aria2"
|
APP="Aria2"
|
||||||
var_disk="8"
|
var_disk="8"
|
||||||
var_cpu="2"
|
var_cpu="2"
|
||||||
var_ram="1028"
|
var_ram="1024"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
variables
|
variables
|
||||||
|
|||||||
@@ -70,9 +70,10 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v
|
|||||||
unzip -q v${RELEASE}.zip
|
unzip -q v${RELEASE}.zip
|
||||||
mv BookStack-${RELEASE} /opt/bookstack
|
mv BookStack-${RELEASE} /opt/bookstack
|
||||||
mv /opt/.env /opt/bookstack/.env
|
mv /opt/.env /opt/bookstack/.env
|
||||||
|
cd /opt/bookstack
|
||||||
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null
|
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null
|
||||||
php artisan key:generate &>/dev/null
|
php artisan key:generate --force &>/dev/null
|
||||||
php artisan migrate &>/dev/null
|
php artisan migrate --force &>/dev/null
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
|||||||
99
ct/glance.sh
Normal file
99
ct/glance.sh
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
________
|
||||||
|
/ ____/ /___ _____ ________
|
||||||
|
/ / __/ / __ `/ __ \/ ___/ _ \
|
||||||
|
/ /_/ / / /_/ / / / / /__/ __/
|
||||||
|
\____/_/\__,_/_/ /_/\___/\___/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="Glance"
|
||||||
|
var_disk="2"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/systemd/system/glance.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -s 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"
|
||||||
|
systemctl stop glance
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q 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"
|
||||||
|
systemctl start glance
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/glance-linux-amd64.tar.gz
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:8080${CL} \n"
|
||||||
106
ct/hoarder.sh
Normal file
106
ct/hoarder.sh
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 tteck
|
||||||
|
# Author: MickLesk (Canbiz) & vhsdream
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
__ __ __
|
||||||
|
/ / / /___ ____ __________/ /__ _____
|
||||||
|
/ /_/ / __ \/ __ `/ ___/ __ / _ \/ ___/
|
||||||
|
/ __ / /_/ / /_/ / / / /_/ / __/ /
|
||||||
|
/_/ /_/\____/\__,_/_/ \__,_/\___/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="Hoarder"
|
||||||
|
var_disk="8"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="4096"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/hoarder ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
PREV_RELEASE=$(cat /opt/${APP}_version.txt)
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "${PREV_RELEASE}" ]]; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop hoarder-web hoarder-workers hoarder-browser
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
mv /opt/hoarder/.env /opt/.env
|
||||||
|
rm -rf /opt/hoarder
|
||||||
|
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv hoarder-${RELEASE} /opt/hoarder
|
||||||
|
cd /opt/hoarder/apps/web
|
||||||
|
pnpm install --frozen-lockfile &>/dev/null
|
||||||
|
pnpm exec next build --experimental-build-mode compile &>/dev/null
|
||||||
|
cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
|
||||||
|
cd /opt/hoarder/apps/workers
|
||||||
|
pnpm install --frozen-lockfile &>/dev/null
|
||||||
|
export DATA_DIR=/opt/hoarder_data
|
||||||
|
cd /opt/hoarder/packages/db
|
||||||
|
pnpm migrate &>/dev/null
|
||||||
|
mv /opt/.env /opt/hoarder/.env
|
||||||
|
sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /opt/hoarder/.env
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start hoarder-browser hoarder-workers hoarder-web
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -R /opt/v${RELEASE}.zip
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} Setup should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:3000${CL} \n"
|
||||||
97
ct/inspircd.sh
Normal file
97
ct/inspircd.sh
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ ________ ______ __
|
||||||
|
/ _/___ _________ / _/ __ \/ ____/___/ /
|
||||||
|
/ // __ \/ ___/ __ \ / // /_/ / / / __ /
|
||||||
|
_/ // / / (__ ) /_/ // // _, _/ /___/ /_/ /
|
||||||
|
/___/_/ /_/____/ .___/___/_/ |_|\____/\__,_/
|
||||||
|
/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="InspIRCd"
|
||||||
|
var_disk="2"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /lib/systemd/system/inspircd.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/inspircd/inspircd/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"
|
||||||
|
systemctl stop inspircd
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
apt-get install "./inspircd_${RELEASE}.deb12u1_amd64.deb" -y &>/dev/nul
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start inspircd
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} server should be reachable by connecting to the following server.
|
||||||
|
${BL}Server Name:${IP} Port:6667${CL} \n"
|
||||||
@@ -61,7 +61,7 @@ if [[ ! -d /usr/lib/jellyfin ]]; then msg_error "No ${APP} Installation Found!";
|
|||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get -y upgrade &>/dev/null
|
apt-get -y upgrade &>/dev/null
|
||||||
apt-get --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null
|
apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null
|
||||||
msg_ok "Updated ${APP} LXC"
|
msg_ok "Updated ${APP} LXC"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,18 +65,14 @@ apt-get update &>/dev/null
|
|||||||
apt-get -y upgrade &>/dev/null
|
apt-get -y upgrade &>/dev/null
|
||||||
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
msg_info "Downloading Keycloak v$RELEASE"
|
msg_info "Updating Keycloak to v$RELEASE"
|
||||||
cd /opt
|
cd /opt
|
||||||
wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz
|
wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz
|
||||||
$STD tar -xvf keycloak-$RELEASE.tar.gz
|
|
||||||
|
|
||||||
msg_info "Merging configuration files"
|
|
||||||
cp -r keycloak/conf keycloak-$RELEASE
|
|
||||||
cp -r keycloak/providers keycloak-$RELEASE
|
|
||||||
cp -r keycloak/themes keycloak-$RELEASE
|
|
||||||
|
|
||||||
msg_info "Updating Keycloak"
|
|
||||||
mv keycloak keycloak.old
|
mv keycloak keycloak.old
|
||||||
|
tar -xzf keycloak-$RELEASE.tar.gz
|
||||||
|
cp -r keycloak.old/conf keycloak-$RELEASE
|
||||||
|
cp -r keycloak.old/providers keycloak-$RELEASE
|
||||||
|
cp -r keycloak.old/themes keycloak-$RELEASE
|
||||||
mv keycloak-$RELEASE keycloak
|
mv keycloak-$RELEASE keycloak
|
||||||
|
|
||||||
msg_info "Delete temporary installation files"
|
msg_info "Delete temporary installation files"
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /opt/komga/komga*.jar ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /opt/komga/komga.jar ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -s https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
@@ -65,8 +65,8 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v
|
|||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
rm -rf /opt/komga/komga*.jar
|
wget -q "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar"
|
||||||
wget -q "https://github.com/gotson/komga/releases/download/v${RELEASE}/komga-${RELEASE}.jar"
|
rm -rf /opt/komga/komga.jar
|
||||||
mv -f komga-${RELEASE}.jar /opt/komga/komga.jar
|
mv -f komga-${RELEASE}.jar /opt/komga/komga.jar
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|||||||
104
ct/lubelogger.sh
Normal file
104
ct/lubelogger.sh
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
__ __ __
|
||||||
|
/ / __ __/ /_ ___ / / ____ ____ _____ ____ _____
|
||||||
|
/ / / / / / __ \/ _ \/ / / __ \/ __ `/ __ `/ _ \/ ___/
|
||||||
|
/ /___/ /_/ / /_/ / __/ /___/ /_/ / /_/ / /_/ / __/ /
|
||||||
|
/_____/\__,_/_.___/\___/_____/\____/\__, /\__, /\___/_/
|
||||||
|
/____//____/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="LubeLogger"
|
||||||
|
var_disk="2"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/systemd/system/lubelogger.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".")
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop lubelogger
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
cp /opt/lubelogger/appsettings.json /opt/appsettings.json
|
||||||
|
rm -rf /opt/lubelogger
|
||||||
|
unzip -qq LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
|
||||||
|
chmod 700 /opt/lubelogger/CarCareTracker
|
||||||
|
mv -f /opt/appsettings.json /opt/lubelogger/appsettings.json
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start lubelogger
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:5000${CL} \n"
|
||||||
79
ct/mylar3.sh
Normal file
79
ct/mylar3.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: davalanche
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/mylar3/mylar3
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
__ ___ __ _____
|
||||||
|
/ |/ /_ __/ /___ _____|__ /
|
||||||
|
/ /|_/ / / / / / __ `/ ___//_ <
|
||||||
|
/ / / / /_/ / / /_/ / / ___/ /
|
||||||
|
/_/ /_/\__, /_/\__,_/_/ /____/
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="Mylar3"
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
if [[ ! -d /opt/mylar3 ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
|
rm -rf /opt/mylar3/* /opt/mylar3/.*
|
||||||
|
wget -qO- https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz | tar -xz --strip-components=1 -C /opt/mylar3
|
||||||
|
systemctl restart mylar3
|
||||||
|
echo "${RELEASE}" > /opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:8090${CL} \n"
|
||||||
99
ct/onedev.sh
Normal file
99
ct/onedev.sh
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ ____
|
||||||
|
/ __ \____ ___ / __ \___ _ __
|
||||||
|
/ / / / __ \/ _ \/ / / / _ \ | / /
|
||||||
|
/ /_/ / / / / __/ /_/ / __/ |/ /
|
||||||
|
\____/_/ /_/\___/_____/\___/|___/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="OneDev"
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="2048"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/systemd/system/onedev.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
GITHUB_RELEASE=$(curl -s https://api.github.com/repos/theonedev/onedev/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${GITHUB_RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop onedev
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${GITHUB_RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz
|
||||||
|
tar -xzf onedev-latest.tar.gz
|
||||||
|
/opt/onedev-latest/bin/upgrade.sh /opt/onedev >/dev/null
|
||||||
|
RELEASE=$(cat /opt/onedev/release.properties | grep "version" | cut -d'=' -f2)
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start onedev
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/onedev-latest
|
||||||
|
rm -rf /opt/onedev-latest.tar.gz
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:6610${CL} \n"
|
||||||
@@ -52,6 +52,26 @@ function default_settings() {
|
|||||||
echo_default
|
echo_default
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /etc/systemd/system/pocketbase.service || ! -x /opt/pocketbase/pocketbase ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop pocketbase
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
/opt/pocketbase/pocketbase update
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start pocketbase
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|||||||
98
ct/snipeit.sh
Normal file
98
ct/snipeit.sh
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
|
||||||
|
#Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
_____ _ __________
|
||||||
|
/ ___/____ (_)___ ___ / _/_ __/
|
||||||
|
\__ \/ __ \/ / __ \/ _ \______ / / / /
|
||||||
|
___/ / / / / / /_/ / __/_____// / / /
|
||||||
|
/____/_/ /_/_/ .___/\___/ /___/ /_/
|
||||||
|
/_/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="SnipeIT"
|
||||||
|
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="2048"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/snipe-it ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/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 "Updating ${APP} to v${RELEASE}"
|
||||||
|
apt-get update &>/dev/null
|
||||||
|
apt-get -y upgrade &>/dev/null
|
||||||
|
mv /opt/snipe-it /opt/snipe-it-backup
|
||||||
|
cd /opt
|
||||||
|
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" &>/dev/null
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv snipe-it-${RELEASE} /opt/snipe-it
|
||||||
|
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
|
||||||
|
cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/
|
||||||
|
cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads
|
||||||
|
cd /opt/snipe-it/
|
||||||
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
composer install --no-dev --prefer-source &>/dev/null
|
||||||
|
composer dump-autoload &>/dev/null
|
||||||
|
php artisan migrate --force &>/dev/null
|
||||||
|
php artisan config:clear &>/dev/null
|
||||||
|
php artisan route:clear &>/dev/null
|
||||||
|
php artisan cache:clear &>/dev/null
|
||||||
|
php artisan view:clear &>/dev/null
|
||||||
|
chown -R www-data: /opt/snipe-it
|
||||||
|
chmod -R 755 /opt/snipe-it
|
||||||
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
|
rm -rf /opt/snipe-it-backup
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
@@ -56,7 +56,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/Sonarr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /var/lib/sonarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating $APP v4"
|
msg_info "Updating $APP v4"
|
||||||
systemctl stop sonarr.service
|
systemctl stop sonarr.service
|
||||||
wget -q -O SonarrV4.tar.gz 'https://services.sonarr.tv/v1/download/main/latest?version=4&os=linux&arch=x64'
|
wget -q -O SonarrV4.tar.gz 'https://services.sonarr.tv/v1/download/main/latest?version=4&os=linux&arch=x64'
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ check_container_resources
|
|||||||
if [[ ! -d /opt/Stirling-PDF ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/Stirling-PDF ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
systemctl stop stirlingpdf
|
systemctl stop stirlingpdf
|
||||||
|
if [[ -n $(dpkg -l | grep -w ocrmypdf) ]] && [[ -z $(dpkg -l | grep -w qpdf) ]]; then
|
||||||
|
apt-get remove -y ocrmypdf &>/dev/null
|
||||||
|
apt-get install -y qpdf &>/dev/null
|
||||||
|
fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz
|
wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz
|
||||||
tar -xzf v$RELEASE.tar.gz
|
tar -xzf v$RELEASE.tar.gz
|
||||||
|
|||||||
93
ct/the-lounge.sh
Normal file
93
ct/the-lounge.sh
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
________ __
|
||||||
|
/_ __/ /_ ___ / / ____ __ ______ ____ ____
|
||||||
|
/ / / __ \/ _ \______/ / / __ \/ / / / __ \/ __ `/ _ \
|
||||||
|
/ / / / / / __/_____/ /___/ /_/ / /_/ / / / / /_/ / __/
|
||||||
|
/_/ /_/ /_/\___/ /_____/\____/\__,_/_/ /_/\__, /\___/
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="The-Lounge"
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="2048"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="yes"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /usr/lib/systemd/system/thelounge.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/thelounge/thelounge-deb/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"
|
||||||
|
systemctl stop thelounge
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
apt-get install --only-upgrade nodejs &>/dev/null
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb
|
||||||
|
dpkg -i ./thelounge_${RELEASE}_all.deb
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start thelounge
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf "/opt/thelounge_${RELEASE}_all.deb"
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} Setup should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:9000${CL} \n"
|
||||||
73
ct/unbound.sh
Normal file
73
ct/unbound.sh
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: wimb0
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
__ __ __ __
|
||||||
|
/ / / /___ / /_ ____ __ ______ ____/ /
|
||||||
|
/ / / / __ \/ __ \/ __ \/ / / / __ \/ __ /
|
||||||
|
/ /_/ / / / / /_/ / /_/ / /_/ / / / / /_/ /
|
||||||
|
\____/_/ /_/_.___/\____/\__,_/_/ /_/\__,_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="Unbound"
|
||||||
|
var_disk="2"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /etc/unbound ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
|
apt-get update &>/dev/null
|
||||||
|
apt-get -y upgrade &>/dev/null
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be online.
|
||||||
|
${BL} Set your DNS server to ${IP}:5335 ${CL} \n"
|
||||||
@@ -17,10 +17,6 @@ cat <<"EOF"
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
header_info
|
header_info
|
||||||
if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
|
|
||||||
echo "AVX instruction set is not supported on this CPU."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Unifi"
|
APP="Unifi"
|
||||||
var_disk="8"
|
var_disk="8"
|
||||||
@@ -62,8 +58,8 @@ check_container_storage
|
|||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /usr/lib/unifi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /usr/lib/unifi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
apt-get update --allow-releaseinfo-change
|
apt-get update --allow-releaseinfo-change &>/dev/null
|
||||||
apt-get install -y unifi
|
apt-get install -y unifi &>/dev/null
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v
|
|||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cd /opt
|
cd /opt
|
||||||
rm -rf /opt/*
|
rm -rf /opt/vikunja/vikunja
|
||||||
wget -q "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb"
|
wget -q "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb"
|
||||||
DEBIAN_FRONTEND=noninteractive dpkg -i vikunja-$RELEASE-amd64.deb &>/dev/null
|
DEBIAN_FRONTEND=noninteractive dpkg -i vikunja-$RELEASE-amd64.deb &>/dev/null
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
|||||||
27
ct/zabbix.sh
27
ct/zabbix.sh
@@ -57,11 +57,32 @@ header_info
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_info "Stopping ${APP} Services"
|
||||||
|
systemctl stop zabbix-server zabbix-agent2
|
||||||
|
msg_ok "Stopped ${APP} Services"
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
|
mkdir -p /opt/zabbix-backup/
|
||||||
|
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
|
||||||
|
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
|
||||||
|
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
|
||||||
|
cp -R /usr/share/zabbix-* /opt/zabbix-backup/
|
||||||
|
rm -Rf /etc/apt/sources.list.d/zabbix.list
|
||||||
|
cd /tmp
|
||||||
|
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
||||||
|
dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get -y upgrade &>/dev/null
|
apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null
|
||||||
systemctl restart zabbix-server
|
|
||||||
msg_ok "Updated $APP LXC"
|
msg_info "Starting ${APP} Services"
|
||||||
|
systemctl start zabbix-server zabbix-agent2
|
||||||
|
systemctl restart apache2
|
||||||
|
msg_ok "Started ${APP} Services"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,41 +56,36 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/zwave-js-ui ]]; then
|
if [[ ! -d /opt/zwave-js-ui ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!";
|
||||||
exit
|
exit;
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
msg_info "Stopping Z-wave JS UI"
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
systemctl stop zwave-js-ui.service
|
msg_info "Stopping Service"
|
||||||
msg_ok "Stopped Z-wave JS UI"
|
systemctl stop zwave-js-ui
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating Z-wave JS UI"
|
msg_info "Updating Z-Wave JS UI"
|
||||||
wget https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
|
rm -rf /opt/zwave-js-ui/*
|
||||||
unzip zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
|
cd /opt/zwave-js-ui
|
||||||
\cp -R zwave-js-ui-linux /opt/zwave-js-ui
|
wget -q https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip
|
||||||
service_path="/etc/systemd/system/zwave-js-ui.service"
|
unzip -q zwave-js-ui-${RELEASE}-linux.zip
|
||||||
echo "[Unit]
|
msg_ok "Updated Z-Wave JS UI"
|
||||||
Description=zwave-js-ui
|
|
||||||
Wants=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
[Service]
|
|
||||||
User=root
|
|
||||||
WorkingDirectory=/opt/zwave-js-ui
|
|
||||||
ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target" >$service_path
|
|
||||||
msg_ok "Updated Z-wave JS UI"
|
|
||||||
|
|
||||||
msg_info "Starting Z-wave JS UI"
|
msg_info "Starting Service"
|
||||||
systemctl enable --now zwave-js-ui.service
|
systemctl start zwave-js-ui
|
||||||
msg_ok "Started Z-wave JS UI"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleanup"
|
msg_info "Cleanup"
|
||||||
rm -rf zwave-js-ui-${RELEASE}-linux.zip zwave-js-ui-linux store
|
rm -rf /opt/zwave-js-ui/zwave-js-ui-${RELEASE}-linux.zip
|
||||||
msg_ok "Cleaned"
|
rm -rf /opt/zwave-js-ui/store
|
||||||
msg_ok "Updated Successfully!\n"
|
msg_ok "Cleaned"
|
||||||
exit
|
msg_ok "Updated Successfully!\n"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
2381
frontend/package-lock.json
generated
2381
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,7 @@
|
|||||||
"build": "next build",
|
"build": "next build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
|
"test": "vitest",
|
||||||
"deploy": "next build && touch out/.nojekyll && git add out/ && git commit -m \"Deploy\" && git subtree push --prefix out origin gh-pages",
|
"deploy": "next build && touch out/.nojekyll && git add out/ && git commit -m \"Deploy\" && git subtree push --prefix out origin gh-pages",
|
||||||
"format:write": "prettier --write \"**/*.{ts,tsx,mdx}\" --cache",
|
"format:write": "prettier --write \"**/*.{ts,tsx,mdx}\" --cache",
|
||||||
"format:check": "prettier --check \"**/*.{ts,tsx,mdx}\" --cache",
|
"format:check": "prettier --check \"**/*.{ts,tsx,mdx}\" --cache",
|
||||||
@@ -59,20 +60,26 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@testing-library/dom": "^10.4.0",
|
||||||
|
"@testing-library/react": "^16.0.1",
|
||||||
"@types/node": "^22",
|
"@types/node": "^22",
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.1",
|
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
|
||||||
|
"@types/react": "npm:types-react@19.0.0-rc.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.8.1",
|
"@typescript-eslint/eslint-plugin": "^8.8.1",
|
||||||
"@typescript-eslint/parser": "^8.8.1",
|
"@typescript-eslint/parser": "^8.8.1",
|
||||||
|
"@vitejs/plugin-react": "^4.3.4",
|
||||||
"eslint-config-next": "15.0.2",
|
"eslint-config-next": "15.0.2",
|
||||||
"postcss": "^8",
|
|
||||||
"eslint": "^9.13.0",
|
"eslint": "^9.13.0",
|
||||||
"prettier": "^3.2.5",
|
"jsdom": "^25.0.1",
|
||||||
|
"postcss": "^8",
|
||||||
"prettier-plugin-tailwindcss": "^0.6.5",
|
"prettier-plugin-tailwindcss": "^0.6.5",
|
||||||
"tailwindcss": "^3.4.9",
|
"prettier": "^3.2.5",
|
||||||
"tailwindcss-animate": "^1.0.7",
|
"tailwindcss-animate": "^1.0.7",
|
||||||
"tailwindcss-animated": "^1.1.2",
|
"tailwindcss-animated": "^1.1.2",
|
||||||
"typescript": "^5"
|
"tailwindcss": "^3.4.9",
|
||||||
|
"typescript": "^5",
|
||||||
|
"vite-tsconfig-paths": "^5.1.3",
|
||||||
|
"vitest": "^2.1.6"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.1",
|
"@types/react": "npm:types-react@19.0.0-rc.1",
|
||||||
|
|||||||
11
frontend/src/__tests__/app/page.test.tsx
Normal file
11
frontend/src/__tests__/app/page.test.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { screen } from "@testing-library/dom";
|
||||||
|
import { render } from "@testing-library/react";
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import Page from "@/app/page";
|
||||||
|
|
||||||
|
describe("Page", () => {
|
||||||
|
it("should show button to view scripts", () => {
|
||||||
|
render(<Page />);
|
||||||
|
expect(screen.getByRole("button", { name: "View Scripts" })).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
53
frontend/src/__tests__/public/validate-json.test.ts
Normal file
53
frontend/src/__tests__/public/validate-json.test.ts
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
import { describe, it, assert, beforeAll } from "vitest";
|
||||||
|
import { promises as fs } from "fs";
|
||||||
|
import path from "path";
|
||||||
|
import { ScriptSchema, type Script } from "@/app/json-editor/_schemas/schemas";
|
||||||
|
import { Metadata } from "@/lib/types";
|
||||||
|
|
||||||
|
const jsonDir = "public/json";
|
||||||
|
const metadataFileName = "metadata.json";
|
||||||
|
const encoding = "utf-8";
|
||||||
|
|
||||||
|
const fileNames = (await fs.readdir(jsonDir))
|
||||||
|
.filter((fileName) => fileName !== metadataFileName)
|
||||||
|
|
||||||
|
describe.each(fileNames)("%s", async (fileName) => {
|
||||||
|
let script: Script;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const filePath = path.resolve(jsonDir, fileName);
|
||||||
|
const fileContent = await fs.readFile(filePath, encoding)
|
||||||
|
script = JSON.parse(fileContent);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should have valid json according to script schema", () => {
|
||||||
|
ScriptSchema.parse(script);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should have a corresponding script file", () => {
|
||||||
|
script.install_methods.forEach((method) => {
|
||||||
|
const scriptPath = path.resolve("..", method.script)
|
||||||
|
assert(fs.stat(scriptPath), `Script file not found: ${scriptPath}`)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe(`${metadataFileName}`, async () => {
|
||||||
|
let metadata: Metadata;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const filePath = path.resolve(jsonDir, metadataFileName);
|
||||||
|
const fileContent = await fs.readFile(filePath, encoding)
|
||||||
|
metadata = JSON.parse(fileContent);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should have valid json according to metadata schema", () => {
|
||||||
|
// TODO: create zod schema for metadata. Move zod schemas to /lib/types.ts
|
||||||
|
assert(metadata.categories.length > 0);
|
||||||
|
metadata.categories.forEach((category) => {
|
||||||
|
assert.isString(category.name)
|
||||||
|
assert.isNumber(category.id)
|
||||||
|
assert.isNumber(category.sort_order)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
4
frontend/src/__tests__/setupTests.ts
Normal file
4
frontend/src/__tests__/setupTests.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import { vi } from "vitest";
|
||||||
|
|
||||||
|
// Mock canvas getContext
|
||||||
|
HTMLCanvasElement.prototype.getContext = vi.fn();
|
||||||
@@ -9,11 +9,9 @@ import {
|
|||||||
import { Category } from "@/lib/types";
|
import { Category } from "@/lib/types";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { ScriptSchema } from "../_schemas/schemas";
|
import { type Script } from "../_schemas/schemas";
|
||||||
import { memo } from "react";
|
import { memo } from "react";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
type CategoryProps = {
|
type CategoryProps = {
|
||||||
script: Script;
|
script: Script;
|
||||||
setScript: (script: Script) => void;
|
setScript: (script: Script) => void;
|
||||||
|
|||||||
@@ -9,11 +9,9 @@ import {
|
|||||||
} from "@/components/ui/select";
|
} from "@/components/ui/select";
|
||||||
import { OperatingSystems } from "@/config/siteConfig";
|
import { OperatingSystems } from "@/config/siteConfig";
|
||||||
import { PlusCircle, Trash2 } from "lucide-react";
|
import { PlusCircle, Trash2 } from "lucide-react";
|
||||||
import { memo, useCallback, useEffect, useRef } from "react";
|
import { memo, useCallback, useRef } from "react";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { InstallMethodSchema, ScriptSchema } from "../_schemas/schemas";
|
import { InstallMethodSchema, ScriptSchema, type Script } from "../_schemas/schemas";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
type InstallMethodProps = {
|
type InstallMethodProps = {
|
||||||
script: Script;
|
script: Script;
|
||||||
@@ -194,11 +192,11 @@ function InstallMethod({
|
|||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
<Select
|
<Select
|
||||||
value={method.resources.version ? String(method.resources.version) : undefined}
|
value={method.resources.version || undefined}
|
||||||
onValueChange={(value) =>
|
onValueChange={(value) =>
|
||||||
updateInstallMethod(index, "resources", {
|
updateInstallMethod(index, "resources", {
|
||||||
...method.resources,
|
...method.resources,
|
||||||
version: value ? Number(value) : null,
|
version: value || null,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
disabled={method.type === "alpine"}
|
disabled={method.type === "alpine"}
|
||||||
|
|||||||
@@ -11,10 +11,8 @@ import { AlertColors } from "@/config/siteConfig";
|
|||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { PlusCircle, Trash2 } from "lucide-react";
|
import { PlusCircle, Trash2 } from "lucide-react";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { ScriptSchema } from "../_schemas/schemas";
|
import { ScriptSchema, type Script } from "../_schemas/schemas";
|
||||||
import { memo, useCallback } from "react";
|
import { memo, useCallback, useRef } from "react";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
type NoteProps = {
|
type NoteProps = {
|
||||||
script: Script;
|
script: Script;
|
||||||
@@ -29,6 +27,8 @@ function Note({
|
|||||||
setIsValid,
|
setIsValid,
|
||||||
setZodErrors,
|
setZodErrors,
|
||||||
}: NoteProps) {
|
}: NoteProps) {
|
||||||
|
const inputRefs = useRef<(HTMLInputElement | null)[]>([]);
|
||||||
|
|
||||||
const addNote = useCallback(() => {
|
const addNote = useCallback(() => {
|
||||||
setScript({
|
setScript({
|
||||||
...script,
|
...script,
|
||||||
@@ -51,6 +51,12 @@ function Note({
|
|||||||
setIsValid(result.success);
|
setIsValid(result.success);
|
||||||
setZodErrors(result.success ? null : result.error);
|
setZodErrors(result.success ? null : result.error);
|
||||||
setScript(updated);
|
setScript(updated);
|
||||||
|
// Restore focus after state update
|
||||||
|
if (key === "text") {
|
||||||
|
setTimeout(() => {
|
||||||
|
inputRefs.current[index]?.focus();
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
}, [script, setScript, setIsValid, setZodErrors]);
|
}, [script, setScript, setIsValid, setZodErrors]);
|
||||||
|
|
||||||
const removeNote = useCallback((index: number) => {
|
const removeNote = useCallback((index: number) => {
|
||||||
@@ -60,46 +66,51 @@ function Note({
|
|||||||
});
|
});
|
||||||
}, [script, setScript]);
|
}, [script, setScript]);
|
||||||
|
|
||||||
const NoteItem = memo(({ note, index }: { note: Script["notes"][number], index: number }) => (
|
const NoteItem = memo(
|
||||||
<div className="space-y-2 border p-4 rounded">
|
({ note, index }: { note: Script["notes"][number]; index: number }) => (
|
||||||
<Input
|
<div className="space-y-2 border p-4 rounded">
|
||||||
placeholder="Note Text"
|
<Input
|
||||||
value={note.text}
|
placeholder="Note Text"
|
||||||
onChange={(e) => updateNote(index, "text", e.target.value)}
|
value={note.text}
|
||||||
/>
|
onChange={(e) => updateNote(index, "text", e.target.value)}
|
||||||
<Select
|
ref={(el) => {
|
||||||
value={note.type}
|
inputRefs.current[index] = el;
|
||||||
onValueChange={(value) => updateNote(index, "type", value)}
|
}}
|
||||||
>
|
/>
|
||||||
<SelectTrigger className="flex-1">
|
<Select
|
||||||
<SelectValue placeholder="Type" />
|
value={note.type}
|
||||||
</SelectTrigger>
|
onValueChange={(value) => updateNote(index, "type", value)}
|
||||||
<SelectContent>
|
>
|
||||||
{Object.keys(AlertColors).map((type) => (
|
<SelectTrigger className="flex-1">
|
||||||
<SelectItem key={type} value={type}>
|
<SelectValue placeholder="Type" />
|
||||||
<span className="flex items-center gap-2">
|
</SelectTrigger>
|
||||||
{type.charAt(0).toUpperCase() + type.slice(1)}{" "}
|
<SelectContent>
|
||||||
<div
|
{Object.keys(AlertColors).map((type) => (
|
||||||
className={cn(
|
<SelectItem key={type} value={type}>
|
||||||
"size-4 rounded-full border",
|
<span className="flex items-center gap-2">
|
||||||
AlertColors[type as keyof typeof AlertColors],
|
{type.charAt(0).toUpperCase() + type.slice(1)}{" "}
|
||||||
)}
|
<div
|
||||||
/>
|
className={cn(
|
||||||
</span>
|
"size-4 rounded-full border",
|
||||||
</SelectItem>
|
AlertColors[type as keyof typeof AlertColors],
|
||||||
))}
|
)}
|
||||||
</SelectContent>
|
/>
|
||||||
</Select>
|
</span>
|
||||||
<Button
|
</SelectItem>
|
||||||
size="sm"
|
))}
|
||||||
variant="destructive"
|
</SelectContent>
|
||||||
type="button"
|
</Select>
|
||||||
onClick={() => removeNote(index)}
|
<Button
|
||||||
>
|
size="sm"
|
||||||
<Trash2 className="mr-2 h-4 w-4" /> Remove Note
|
variant="destructive"
|
||||||
</Button>
|
type="button"
|
||||||
</div>
|
onClick={() => removeNote(index)}
|
||||||
));
|
>
|
||||||
|
<Trash2 className="mr-2 h-4 w-4" /> Remove Note
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
NoteItem.displayName = 'NoteItem';
|
NoteItem.displayName = 'NoteItem';
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export const InstallMethodSchema = z.object({
|
|||||||
ram: z.number().nullable(),
|
ram: z.number().nullable(),
|
||||||
hdd: z.number().nullable(),
|
hdd: z.number().nullable(),
|
||||||
os: z.string().nullable(),
|
os: z.string().nullable(),
|
||||||
version: z.number().nullable(),
|
version: z.string().nullable(),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ export const ScriptSchema = z.object({
|
|||||||
slug: z.string().min(1, "Slug is required"),
|
slug: z.string().min(1, "Slug is required"),
|
||||||
categories: z.array(z.number()),
|
categories: z.array(z.number()),
|
||||||
date_created: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format").min(1, "Date is required"),
|
date_created: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format").min(1, "Date is required"),
|
||||||
type: z.enum(["vm", "ct", "misc"], {
|
type: z.enum(["vm", "ct", "misc", "turnkey"], {
|
||||||
errorMap: () => ({ message: "Type must be either 'vm', 'ct', or 'misc'" })
|
errorMap: () => ({ message: "Type must be either 'vm', 'ct', 'misc' or 'turnkey'" })
|
||||||
}),
|
}),
|
||||||
updateable: z.boolean(),
|
updateable: z.boolean(),
|
||||||
privileged: z.boolean(),
|
privileged: z.boolean(),
|
||||||
@@ -41,3 +41,5 @@ export const ScriptSchema = z.object({
|
|||||||
}),
|
}),
|
||||||
notes: z.array(NoteSchema),
|
notes: z.array(NoteSchema),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export type Script = z.infer<typeof ScriptSchema>;
|
||||||
|
|||||||
@@ -5,7 +5,11 @@ import { Button } from "@/components/ui/button";
|
|||||||
import { Calendar } from "@/components/ui/calendar";
|
import { Calendar } from "@/components/ui/calendar";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Label } from "@/components/ui/label";
|
import { Label } from "@/components/ui/label";
|
||||||
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
import {
|
||||||
|
Popover,
|
||||||
|
PopoverContent,
|
||||||
|
PopoverTrigger,
|
||||||
|
} from "@/components/ui/popover";
|
||||||
import {
|
import {
|
||||||
Select,
|
Select,
|
||||||
SelectContent,
|
SelectContent,
|
||||||
@@ -26,9 +30,7 @@ import { z } from "zod";
|
|||||||
import Categories from "./_components/Categories";
|
import Categories from "./_components/Categories";
|
||||||
import InstallMethod from "./_components/InstallMethod";
|
import InstallMethod from "./_components/InstallMethod";
|
||||||
import Note from "./_components/Note";
|
import Note from "./_components/Note";
|
||||||
import { ScriptSchema } from "./_schemas/schemas";
|
import { ScriptSchema, type Script } from "./_schemas/schemas";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
const initialScript: Script = {
|
const initialScript: Script = {
|
||||||
name: "",
|
name: "",
|
||||||
@@ -64,25 +66,29 @@ export default function JSONGenerator() {
|
|||||||
.catch((error) => console.error("Error fetching categories:", error));
|
.catch((error) => console.error("Error fetching categories:", error));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const updateScript = useCallback((key: keyof Script, value: Script[keyof Script]) => {
|
const updateScript = useCallback(
|
||||||
setScript((prev) => {
|
(key: keyof Script, value: Script[keyof Script]) => {
|
||||||
const updated = { ...prev, [key]: value };
|
setScript((prev) => {
|
||||||
|
const updated = { ...prev, [key]: value };
|
||||||
|
|
||||||
if (key === "type" || key === "slug") {
|
if (key === "type" || key === "slug") {
|
||||||
updated.install_methods = updated.install_methods.map((method) => ({
|
updated.install_methods = updated.install_methods.map((method) => ({
|
||||||
...method,
|
...method,
|
||||||
script: method.type === "alpine"
|
script:
|
||||||
? `/${updated.type}/alpine-${updated.slug}.sh`
|
method.type === "alpine"
|
||||||
: `/${updated.type}/${updated.slug}.sh`,
|
? `/${updated.type}/alpine-${updated.slug}.sh`
|
||||||
}));
|
: `/${updated.type}/${updated.slug}.sh`,
|
||||||
}
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
const result = ScriptSchema.safeParse(updated);
|
const result = ScriptSchema.safeParse(updated);
|
||||||
setIsValid(result.success);
|
setIsValid(result.success);
|
||||||
setZodErrors(result.success ? null : result.error);
|
setZodErrors(result.success ? null : result.error);
|
||||||
return updated;
|
return updated;
|
||||||
});
|
});
|
||||||
}, []);
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
const handleCopy = useCallback(() => {
|
const handleCopy = useCallback(() => {
|
||||||
navigator.clipboard.writeText(JSON.stringify(script, null, 2));
|
navigator.clipboard.writeText(JSON.stringify(script, null, 2));
|
||||||
@@ -91,37 +97,43 @@ export default function JSONGenerator() {
|
|||||||
toast.success("Copied metadata to clipboard");
|
toast.success("Copied metadata to clipboard");
|
||||||
}, [script]);
|
}, [script]);
|
||||||
|
|
||||||
const handleDateSelect = useCallback((date: Date | undefined) => {
|
const handleDateSelect = useCallback(
|
||||||
updateScript(
|
(date: Date | undefined) => {
|
||||||
"date_created",
|
updateScript("date_created", format(date || new Date(), "yyyy-MM-dd"));
|
||||||
format(date || new Date(), "yyyy-MM-dd")
|
},
|
||||||
);
|
[updateScript],
|
||||||
}, [updateScript]);
|
|
||||||
|
|
||||||
const formattedDate = useMemo(() =>
|
|
||||||
script.date_created ? format(script.date_created, "PPP") : undefined,
|
|
||||||
[script.date_created]
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const validationAlert = useMemo(() => (
|
const formattedDate = useMemo(
|
||||||
<Alert className={cn("text-black", isValid ? "bg-green-100" : "bg-red-100")}>
|
() =>
|
||||||
<AlertTitle>{isValid ? "Valid JSON" : "Invalid JSON"}</AlertTitle>
|
script.date_created ? format(script.date_created, "PPP") : undefined,
|
||||||
<AlertDescription>
|
[script.date_created],
|
||||||
{isValid
|
);
|
||||||
? "The current JSON is valid according to the schema."
|
|
||||||
: "The current JSON does not match the required schema."}
|
const validationAlert = useMemo(
|
||||||
</AlertDescription>
|
() => (
|
||||||
{zodErrors && (
|
<Alert
|
||||||
<div className="mt-2 space-y-1">
|
className={cn("text-black", isValid ? "bg-green-100" : "bg-red-100")}
|
||||||
{zodErrors.errors.map((error, index) => (
|
>
|
||||||
<AlertDescription key={index} className="p-1 text-red-500">
|
<AlertTitle>{isValid ? "Valid JSON" : "Invalid JSON"}</AlertTitle>
|
||||||
{error.path.join(".")} - {error.message}
|
<AlertDescription>
|
||||||
</AlertDescription>
|
{isValid
|
||||||
))}
|
? "The current JSON is valid according to the schema."
|
||||||
</div>
|
: "The current JSON does not match the required schema."}
|
||||||
)}
|
</AlertDescription>
|
||||||
</Alert>
|
{zodErrors && (
|
||||||
), [isValid, zodErrors]);
|
<div className="mt-2 space-y-1">
|
||||||
|
{zodErrors.errors.map((error, index) => (
|
||||||
|
<AlertDescription key={index} className="p-1 text-red-500">
|
||||||
|
{error.path.join(".")} - {error.message}
|
||||||
|
</AlertDescription>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Alert>
|
||||||
|
),
|
||||||
|
[isValid, zodErrors],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex h-screen mt-20">
|
<div className="flex h-screen mt-20">
|
||||||
@@ -222,14 +234,18 @@ export default function JSONGenerator() {
|
|||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
<Switch
|
<Switch
|
||||||
checked={script.updateable}
|
checked={script.updateable}
|
||||||
onCheckedChange={(checked) => updateScript("updateable", checked)}
|
onCheckedChange={(checked) =>
|
||||||
|
updateScript("updateable", checked)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<label>Updateable</label>
|
<label>Updateable</label>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
<Switch
|
<Switch
|
||||||
checked={script.privileged}
|
checked={script.privileged}
|
||||||
onCheckedChange={(checked) => updateScript("privileged", checked)}
|
onCheckedChange={(checked) =>
|
||||||
|
updateScript("privileged", checked)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<label>Privileged</label>
|
<label>Privileged</label>
|
||||||
</div>
|
</div>
|
||||||
@@ -238,7 +254,12 @@ export default function JSONGenerator() {
|
|||||||
placeholder="Interface Port"
|
placeholder="Interface Port"
|
||||||
type="number"
|
type="number"
|
||||||
value={script.interface_port || ""}
|
value={script.interface_port || ""}
|
||||||
onChange={(e) => updateScript("interface_port", e.target.value ? Number(e.target.value) : null)}
|
onChange={(e) =>
|
||||||
|
updateScript(
|
||||||
|
"interface_port",
|
||||||
|
e.target.value ? Number(e.target.value) : null,
|
||||||
|
)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<Input
|
<Input
|
||||||
@@ -249,7 +270,9 @@ export default function JSONGenerator() {
|
|||||||
<Input
|
<Input
|
||||||
placeholder="Documentation URL"
|
placeholder="Documentation URL"
|
||||||
value={script.documentation || ""}
|
value={script.documentation || ""}
|
||||||
onChange={(e) => updateScript("documentation", e.target.value || null)}
|
onChange={(e) =>
|
||||||
|
updateScript("documentation", e.target.value || null)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<InstallMethod
|
<InstallMethod
|
||||||
@@ -262,18 +285,22 @@ export default function JSONGenerator() {
|
|||||||
<Input
|
<Input
|
||||||
placeholder="Username"
|
placeholder="Username"
|
||||||
value={script.default_credentials.username || ""}
|
value={script.default_credentials.username || ""}
|
||||||
onChange={(e) => updateScript("default_credentials", {
|
onChange={(e) =>
|
||||||
...script.default_credentials,
|
updateScript("default_credentials", {
|
||||||
username: e.target.value || null,
|
...script.default_credentials,
|
||||||
})}
|
username: e.target.value || null,
|
||||||
|
})
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<Input
|
<Input
|
||||||
placeholder="Password"
|
placeholder="Password"
|
||||||
value={script.default_credentials.password || ""}
|
value={script.default_credentials.password || ""}
|
||||||
onChange={(e) => updateScript("default_credentials", {
|
onChange={(e) =>
|
||||||
...script.default_credentials,
|
updateScript("default_credentials", {
|
||||||
password: e.target.value || null,
|
...script.default_credentials,
|
||||||
})}
|
password: e.target.value || null,
|
||||||
|
})
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<Note
|
<Note
|
||||||
script={script}
|
script={script}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export default function ScriptAccordion({
|
|||||||
value={expandedItem}
|
value={expandedItem}
|
||||||
onValueChange={handleAccordionChange}
|
onValueChange={handleAccordionChange}
|
||||||
collapsible
|
collapsible
|
||||||
className="overflow-y-scroll max-h-[calc(100vh-210px)] overflow-x-hidden mt-3 p-2"
|
className="overflow-y-scroll max-h-[calc(100vh-220px)] overflow-x-hidden mt-3 p-2"
|
||||||
>
|
>
|
||||||
{items.map((category) => (
|
{items.map((category) => (
|
||||||
<AccordionItem
|
<AccordionItem
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export const formattedBadge = (type: string) => {
|
|||||||
<Badge className="text-yellow-500/75 border-yellow-500/75">LXC</Badge>
|
<Badge className="text-yellow-500/75 border-yellow-500/75">LXC</Badge>
|
||||||
);
|
);
|
||||||
case "misc":
|
case "misc":
|
||||||
return <Badge className="text-red-500/75 border-red-500/75">MISC</Badge>;
|
return <Badge className="text-green-500/75 border-green-500/75">MISC</Badge>;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
@@ -95,7 +95,7 @@ export default function CommandMenu() {
|
|||||||
{category.scripts.map((script) => (
|
{category.scripts.map((script) => (
|
||||||
<CommandItem
|
<CommandItem
|
||||||
key={`script:${script.slug}`}
|
key={`script:${script.slug}`}
|
||||||
value={script.slug}
|
value={`${script.slug}-${script.name}`}
|
||||||
onSelect={() => {
|
onSelect={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
router.push(`/scripts?id=${script.slug}`);
|
router.push(`/scripts?id=${script.slug}`);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export const navbarLinks = [
|
|||||||
{
|
{
|
||||||
href: `https://github.com/community-scripts/${basePath}/blob/main/CHANGELOG.md`,
|
href: `https://github.com/community-scripts/${basePath}/blob/main/CHANGELOG.md`,
|
||||||
event: "Change Log",
|
event: "Change Log",
|
||||||
icon: <Scroll className="h-4 w-4 hidden sm:block" />,
|
icon: <Scroll className="h-4 w-4" />,
|
||||||
text: "Change Log",
|
text: "Change Log",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export type Script = {
|
|||||||
ram: number | null;
|
ram: number | null;
|
||||||
hdd: number | null;
|
hdd: number | null;
|
||||||
os: string | null;
|
os: string | null;
|
||||||
version: number | null;
|
version: string | null;
|
||||||
};
|
};
|
||||||
}[];
|
}[];
|
||||||
default_credentials: {
|
default_credentials: {
|
||||||
|
|||||||
@@ -30,24 +30,6 @@
|
|||||||
--chart-3: 197 37% 24%;
|
--chart-3: 197 37% 24%;
|
||||||
--chart-4: 43 74% 66%;
|
--chart-4: 43 74% 66%;
|
||||||
--chart-5: 27 87% 67%;
|
--chart-5: 27 87% 67%;
|
||||||
--expo-out: linear(
|
|
||||||
0 0%,
|
|
||||||
0.1684 2.66%,
|
|
||||||
0.3165 5.49%,
|
|
||||||
0.446 8.52%,
|
|
||||||
0.5581 11.78%,
|
|
||||||
0.6535 15.29%,
|
|
||||||
0.7341 19.11%,
|
|
||||||
0.8011 23.3%,
|
|
||||||
0.8557 27.93%,
|
|
||||||
0.8962 32.68%,
|
|
||||||
0.9283 38.01%,
|
|
||||||
0.9529 44.08%,
|
|
||||||
0.9711 51.14%,
|
|
||||||
0.9833 59.06%,
|
|
||||||
0.9915 68.74%,
|
|
||||||
1 100%
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
::selection {
|
::selection {
|
||||||
@@ -81,42 +63,6 @@
|
|||||||
--chart-4: 280 65% 60%;
|
--chart-4: 280 65% 60%;
|
||||||
--chart-5: 340 75% 55%;
|
--chart-5: 340 75% 55%;
|
||||||
}
|
}
|
||||||
|
|
||||||
::view-transition-group(root) {
|
|
||||||
animation-duration: 0.7bun s;
|
|
||||||
animation-timing-function: var(--expo-out);
|
|
||||||
}
|
|
||||||
|
|
||||||
::view-transition-new(root) {
|
|
||||||
animation-name: reveal-light;
|
|
||||||
}
|
|
||||||
|
|
||||||
::view-transition-old(root),
|
|
||||||
.dark::view-transition-old(root) {
|
|
||||||
animation: none;
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
.dark::view-transition-new(root) {
|
|
||||||
animation-name: reveal-dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes reveal-dark {
|
|
||||||
from {
|
|
||||||
clip-path: polygon(50% -71%, -50% 71%, -50% 71%, 50% -71%);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
clip-path: polygon(50% -71%, -50% 71%, 50% 171%, 171% 50%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes reveal-light {
|
|
||||||
from {
|
|
||||||
clip-path: polygon(171% 50%, 50% 171%, 50% 171%, 171% 50%);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
clip-path: polygon(171% 50%, 50% 171%, -50% 71%, 50% -71%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@layer base {
|
@layer base {
|
||||||
|
|||||||
11
frontend/vitest.config.mjs
Normal file
11
frontend/vitest.config.mjs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { defineConfig } from 'vitest/config'
|
||||||
|
import react from '@vitejs/plugin-react'
|
||||||
|
import tsconfigPaths from 'vite-tsconfig-paths'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [tsconfigPaths(), react()],
|
||||||
|
test: {
|
||||||
|
environment: "jsdom",
|
||||||
|
setupFiles: ["src/__tests__/setupTests.ts"]
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -25,7 +25,9 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
msg_info "Installing Alpine-Vaultwarden"
|
msg_info "Installing Alpine-Vaultwarden"
|
||||||
$STD apk add vaultwarden
|
$STD apk add vaultwarden
|
||||||
sed -i -e 's/# export ADMIN_TOKEN=.*/export ADMIN_TOKEN='\'''\''/' -e '/^# export ROCKET_ADDRESS=0\.0\.0\.0/s/^# //' -e 's|export WEB_VAULT_ENABLED=.*|export WEB_VAULT_ENABLED=true|' /etc/conf.d/vaultwarden
|
sed -i -e 's|export WEB_VAULT_ENABLED=.*|export WEB_VAULT_ENABLED=true|' /etc/conf.d/vaultwarden
|
||||||
|
echo -e "export ADMIN_TOKEN=''" >>/etc/conf.d/vaultwarden
|
||||||
|
echo -e "export ROCKET_ADDRESS=0.0.0.0" >>/etc/conf.d/vaultwarden
|
||||||
msg_ok "Installed Alpine-Vaultwarden"
|
msg_ok "Installed Alpine-Vaultwarden"
|
||||||
|
|
||||||
msg_info "Installing Web-Vault"
|
msg_info "Installing Web-Vault"
|
||||||
|
|||||||
81
install/glance-install.sh
Normal file
81
install/glance-install.sh
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
curl \
|
||||||
|
sudo \
|
||||||
|
mc
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing Glance"
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz
|
||||||
|
mkdir -p /opt/glance
|
||||||
|
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
|
||||||
|
cat <<EOF >/opt/glance/glance.yml
|
||||||
|
pages:
|
||||||
|
- name: Startpage
|
||||||
|
width: slim
|
||||||
|
hide-desktop-navigation: true
|
||||||
|
center-vertically: true
|
||||||
|
columns:
|
||||||
|
- size: full
|
||||||
|
widgets:
|
||||||
|
- type: search
|
||||||
|
autofocus: true
|
||||||
|
- type: bookmarks
|
||||||
|
groups:
|
||||||
|
- title: General
|
||||||
|
links:
|
||||||
|
- title: Google
|
||||||
|
url: https://www.google.com/
|
||||||
|
- title: Helper Scripts
|
||||||
|
url: https://github.com/community-scripts/ProxmoxVE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed Glance"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
service_path="/etc/systemd/system/glance.service"
|
||||||
|
echo "[Unit]
|
||||||
|
Description=Glance Daemon
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/glance
|
||||||
|
ExecStart=/opt/glance/glance --config /opt/glance/glance.yml
|
||||||
|
TimeoutStopSec=20
|
||||||
|
KillMode=process
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target" >$service_path
|
||||||
|
|
||||||
|
systemctl enable -q --now glance.service
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/glance-linux-amd64.tar.gz
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
181
install/hoarder-install.sh
Normal file
181
install/hoarder-install.sh
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 tteck
|
||||||
|
# Author: MickLesk (Canbiz) & vhsdream
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
g++ \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
sudo \
|
||||||
|
gnupg \
|
||||||
|
ca-certificates \
|
||||||
|
chromium/stable \
|
||||||
|
chromium-common/stable \
|
||||||
|
mc
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Additional Tools"
|
||||||
|
wget -q https://github.com/Y2Z/monolith/releases/latest/download/monolith-gnu-linux-x86_64 -O /usr/bin/monolith
|
||||||
|
chmod +x /usr/bin/monolith
|
||||||
|
wget -q https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux -O /usr/bin/yt-dlp
|
||||||
|
chmod +x /usr/bin/yt-dlp
|
||||||
|
msg_ok "Installed Additional Tools"
|
||||||
|
|
||||||
|
msg_info "Installing Meilisearch"
|
||||||
|
cd /tmp
|
||||||
|
wget -q https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb
|
||||||
|
$STD dpkg -i meilisearch.deb
|
||||||
|
wget -q https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -O /etc/meilisearch.toml
|
||||||
|
MASTER_KEY=$(openssl rand -base64 12)
|
||||||
|
sed -i \
|
||||||
|
-e 's|^env =.*|env = "production"|' \
|
||||||
|
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
|
||||||
|
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
|
||||||
|
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
|
||||||
|
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
|
||||||
|
-e 's|^# no_analytics = true|no_analytics = true|' \
|
||||||
|
/etc/meilisearch.toml
|
||||||
|
msg_ok "Installed Meilisearch"
|
||||||
|
|
||||||
|
msg_info "Installing Node.js"
|
||||||
|
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
|
||||||
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
|
msg_info "Installing Hoarder"
|
||||||
|
cd /opt
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv hoarder-${RELEASE} /opt/hoarder
|
||||||
|
cd /opt/hoarder
|
||||||
|
corepack enable
|
||||||
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
|
export CI="true"
|
||||||
|
cd /opt/hoarder/apps/web
|
||||||
|
$STD pnpm install --frozen-lockfile
|
||||||
|
$STD pnpm exec next build --experimental-build-mode compile
|
||||||
|
cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
|
||||||
|
cd /opt/hoarder/apps/workers
|
||||||
|
$STD pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
export DATA_DIR=/opt/hoarder_data
|
||||||
|
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
||||||
|
cat <<EOF >/opt/hoarder/.env
|
||||||
|
SERVER_VERSION=$RELEASE
|
||||||
|
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
||||||
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
|
DATA_DIR="$DATA_DIR"
|
||||||
|
MEILI_ADDR="http://127.0.0.1:7700"
|
||||||
|
MEILI_MASTER_KEY="$MASTER_KEY"
|
||||||
|
BROWSER_WEB_URL="http://127.0.0.1:9222"
|
||||||
|
|
||||||
|
# If you're planning to use OpenAI for tagging. Uncomment the following line:
|
||||||
|
# OPENAI_API_KEY="<API_KEY>"
|
||||||
|
|
||||||
|
# If you're planning to use ollama for tagging, uncomment the following lines:
|
||||||
|
# OLLAMA_BASE_URL="<OLLAMA_ADDR>"
|
||||||
|
|
||||||
|
# You can change the models used by uncommenting the following lines, and changing them according to your needs:
|
||||||
|
# INFERENCE_TEXT_MODEL="gpt-4o-mini"
|
||||||
|
# INFERENCE_IMAGE_MODEL="gpt-4o-mini"
|
||||||
|
EOF
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed Hoarder"
|
||||||
|
|
||||||
|
msg_info "Running Database Migration"
|
||||||
|
mkdir -p ${DATA_DIR}
|
||||||
|
cd /opt/hoarder/packages/db
|
||||||
|
$STD pnpm migrate
|
||||||
|
msg_ok "Database Migration Completed"
|
||||||
|
|
||||||
|
msg_info "Creating Services"
|
||||||
|
cat <<EOF >/etc/systemd/system/meilisearch.service
|
||||||
|
[Unit]
|
||||||
|
Description=Meilisearch
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/hoarder-web.service
|
||||||
|
[Unit]
|
||||||
|
Description=Hoarder Web
|
||||||
|
Wants=network.target hoarder-workers.service
|
||||||
|
After=network.target hoarder-workers.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=pnpm start
|
||||||
|
WorkingDirectory=/opt/hoarder/apps/web
|
||||||
|
EnvironmentFile=/opt/hoarder/.env
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/hoarder-browser.service
|
||||||
|
[Unit]
|
||||||
|
Description=Hoarder Headless Browser
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
ExecStart=/usr/bin/chromium --headless --no-sandbox --disable-gpu --disable-dev-shm-usage --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 --hide-scrollbars
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/hoarder-workers.service
|
||||||
|
[Unit]
|
||||||
|
Description=Hoarder Workers
|
||||||
|
Wants=network.target hoarder-browser.service meilisearch.service
|
||||||
|
After=network.target hoarder-browser.service meilisearch.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=pnpm start:prod
|
||||||
|
WorkingDirectory=/opt/hoarder/apps/workers
|
||||||
|
EnvironmentFile=/opt/hoarder/.env
|
||||||
|
Restart=always
|
||||||
|
TimeoutStopSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl -q enable --now meilisearch.service hoarder-browser.service hoarder-workers.service hoarder-web.service
|
||||||
|
msg_ok "Created Services"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /tmp/meilisearch.deb
|
||||||
|
rm -f /opt/v${RELEASE}.zip
|
||||||
|
$STD apt-get autoremove -y
|
||||||
|
$STD apt-get autoclean -y
|
||||||
|
msg_ok "Cleaned"
|
||||||
54
install/inspircd-install.sh
Normal file
54
install/inspircd-install.sh
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
curl \
|
||||||
|
mc \
|
||||||
|
sudo
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing InspIRCd"
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/inspircd/inspircd/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
$STD apt-get install "./inspircd_${RELEASE}.deb12u1_amd64.deb" -y &>/dev/null
|
||||||
|
cat <<EOF >/etc/inspircd/inspircd.conf
|
||||||
|
<define name="networkDomain" value="helper-scripts.com">
|
||||||
|
<define name="networkName" value="Proxmox VE Helper-Scripts">
|
||||||
|
|
||||||
|
<server
|
||||||
|
name="irc.&networkDomain;"
|
||||||
|
description="&networkName; IRC server"
|
||||||
|
network="&networkName;">
|
||||||
|
<admin
|
||||||
|
name="Admin"
|
||||||
|
description="Supreme Overlord"
|
||||||
|
email="irc@&networkDomain;">
|
||||||
|
<bind address="" port="6667" type="clients">
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed InspIRCd"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -56,9 +56,9 @@ $STD composer install --no-dev --optimize-autoloader --no-interaction
|
|||||||
cp .env.dist .env
|
cp .env.dist .env
|
||||||
sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=$MYSQL_VERSION" /opt/kimai/.env
|
sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=$MYSQL_VERSION" /opt/kimai/.env
|
||||||
$STD bin/console kimai:install -n
|
$STD bin/console kimai:install -n
|
||||||
chown -R :www-data .
|
chown -R :www-data /opt/kimai
|
||||||
chmod -R g+r .
|
chmod -R g+r /opt/kimai
|
||||||
chmod -R g+rw var/
|
chmod -R g+rw /opt/kimai
|
||||||
sudo chown -R www-data:www-data /opt/kimai
|
sudo chown -R www-data:www-data /opt/kimai
|
||||||
sudo chmod -R 755 /opt/kimai
|
sudo chmod -R 755 /opt/kimai
|
||||||
$STD expect <<EOF
|
$STD expect <<EOF
|
||||||
|
|||||||
72
install/lubelogger-install.sh
Normal file
72
install/lubelogger-install.sh
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
curl \
|
||||||
|
sudo \
|
||||||
|
wget \
|
||||||
|
mc \
|
||||||
|
zip \
|
||||||
|
jq
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing LubeLogger"
|
||||||
|
cd /opt
|
||||||
|
mkdir -p /opt/lubelogger
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".")
|
||||||
|
cd /opt/lubelogger
|
||||||
|
wget -q https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
unzip -q LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
chmod 700 /opt/lubelogger/CarCareTracker
|
||||||
|
cp /opt/lubelogger/appsettings.json /opt/lubelogger/appsettings_bak.json
|
||||||
|
jq '.Kestrel = {"Endpoints": {"Http": {"Url": "http://0.0.0.0:5000"}}}' /opt/lubelogger/appsettings_bak.json > /opt/lubelogger/appsettings.json
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed LubeLogger"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/lubelogger.service
|
||||||
|
[Unit]
|
||||||
|
Description=LubeLogger Daemon
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/lubelogger
|
||||||
|
ExecStart=/opt/lubelogger/CarCareTracker
|
||||||
|
TimeoutStopSec=20
|
||||||
|
KillMode=process
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl enable --now -q lubelogger.service
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/lubelogger/appsettings_bak.json
|
||||||
|
rm -rf /opt/lubelogger/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -21,6 +21,11 @@ $STD apt-get install -y gpg
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Mosquitto MQTT Broker"
|
msg_info "Installing Mosquitto MQTT Broker"
|
||||||
|
source /etc/os-release
|
||||||
|
curl -fsSL http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key >/usr/share/keyrings/mosquitto-repo.gpg.key
|
||||||
|
chmod go+r /usr/share/keyrings/mosquitto-repo.gpg.key
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/mosquitto-repo.gpg.key] http://repo.mosquitto.org/debian ${VERSION_CODENAME} main" >/etc/apt/sources.list.d/mosquitto.list
|
||||||
|
$STD apt-get update
|
||||||
$STD apt-get -y install mosquitto
|
$STD apt-get -y install mosquitto
|
||||||
$STD apt-get -y install mosquitto-clients
|
$STD apt-get -y install mosquitto-clients
|
||||||
cat <<EOF >/etc/mosquitto/conf.d/default.conf
|
cat <<EOF >/etc/mosquitto/conf.d/default.conf
|
||||||
|
|||||||
68
install/mylar3-install.sh
Normal file
68
install/mylar3-install.sh
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: davalanche
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/mylar3/mylar3
|
||||||
|
|
||||||
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
curl \
|
||||||
|
sudo \
|
||||||
|
mc \
|
||||||
|
jq
|
||||||
|
echo "deb http://deb.debian.org/debian bookworm non-free non-free-firmware" > /etc/apt/sources.list.d/non-free.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y unrar
|
||||||
|
rm /etc/apt/sources.list.d/non-free.list
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Updating Python3"
|
||||||
|
$STD apt-get install -y python3-pip
|
||||||
|
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||||
|
$STD pip install -U --no-cache-dir pip
|
||||||
|
msg_ok "Updated Python3"
|
||||||
|
|
||||||
|
msg_info "Installing ${APPLICATION}"
|
||||||
|
mkdir -p /opt/mylar3
|
||||||
|
mkdir -p /opt/mylar3-data
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
|
||||||
|
wget -qO- https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz | tar -xz --strip-components=1 -C /opt/mylar3
|
||||||
|
$STD pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
||||||
|
echo "${RELEASE}" > /opt/${APPLICATION}_version.txt
|
||||||
|
msg_ok "Installed ${APPLICATION}"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/mylar3.service
|
||||||
|
[Unit]
|
||||||
|
Description=Mylar3 Service
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/python3 /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data
|
||||||
|
GuessMainPID=no
|
||||||
|
Type=forking
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now mylar3.service
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -80,7 +80,7 @@ else
|
|||||||
cd ./nginx-proxy-manager-${RELEASE}
|
cd ./nginx-proxy-manager-${RELEASE}
|
||||||
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
msg_info "Setting up Enviroment"
|
msg_info "Setting up Environment"
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
||||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||||
|
|||||||
44
install/onedev-install.sh
Normal file
44
install/onedev-install.sh
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
curl \
|
||||||
|
mc \
|
||||||
|
sudo \
|
||||||
|
default-jdk \
|
||||||
|
git
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing OneDev"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz
|
||||||
|
tar -xzf onedev-latest.tar.gz
|
||||||
|
mv /opt/onedev-latest /opt/onedev
|
||||||
|
$STD /opt/onedev/bin/server.sh install
|
||||||
|
systemctl start onedev
|
||||||
|
RELEASE=$(cat /opt/onedev/release.properties | grep "version" | cut -d'=' -f2)
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed OneDev"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/onedev-latest.tar.gz
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -20,8 +20,8 @@ $STD apt-get install -y mc
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Pocketbase"
|
msg_info "Installing Pocketbase"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE="$(curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')"
|
||||||
wget -q https://github.com/pocketbase/pocketbase/releases/download/v${RELEASE}/pocketbase_${RELEASE}_linux_amd64.zip -O /tmp/pocketbase.zip
|
wget -q "https://github.com/pocketbase/pocketbase/releases/download/v${RELEASE}/pocketbase_${RELEASE}_linux_amd64.zip" -O /tmp/pocketbase.zip
|
||||||
mkdir -p /opt/pocketbase/{pb_public,pb_migrations,pb_hooks}
|
mkdir -p /opt/pocketbase/{pb_public,pb_migrations,pb_hooks}
|
||||||
unzip -q -o /tmp/pocketbase.zip -d /opt/pocketbase
|
unzip -q -o /tmp/pocketbase.zip -d /opt/pocketbase
|
||||||
|
|
||||||
@@ -49,6 +49,7 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /tmp/pocketbase.zip
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ cat <<EOF >/etc/postgresql/17/main/pg_hba.conf
|
|||||||
local all postgres peer
|
local all postgres peer
|
||||||
# TYPE DATABASE USER ADDRESS METHOD
|
# TYPE DATABASE USER ADDRESS METHOD
|
||||||
# "local" is for Unix domain socket connections only
|
# "local" is for Unix domain socket connections only
|
||||||
local all all peer
|
local all all md5
|
||||||
# IPv4 local connections:
|
# IPv4 local connections:
|
||||||
host all all 127.0.0.1/32 scram-sha-256
|
host all all 127.0.0.1/32 scram-sha-256
|
||||||
host all all 0.0.0.0/24 md5
|
host all all 0.0.0.0/24 md5
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ cat <<EOF >/etc/systemd/system/qbittorrent-nox.service
|
|||||||
Description=qBittorrent client
|
Description=qBittorrent client
|
||||||
After=network.target
|
After=network.target
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/qbittorrent-nox --webui-port=8090
|
ExecStart=/usr/bin/qbittorrent-nox
|
||||||
Restart=always
|
Restart=always
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
108
install/snipeit-install.sh
Normal file
108
install/snipeit-install.sh
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
|
||||||
|
#Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
curl \
|
||||||
|
composer \
|
||||||
|
git \
|
||||||
|
sudo \
|
||||||
|
mc \
|
||||||
|
nginx \
|
||||||
|
php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli} \
|
||||||
|
mariadb-server
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setting up database"
|
||||||
|
DB_NAME=snipeit_db
|
||||||
|
DB_USER=snipeit
|
||||||
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
|
mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
|
mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
||||||
|
mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
|
{
|
||||||
|
echo "SnipeIT-Credentials"
|
||||||
|
echo "SnipeIT Database User: $DB_USER"
|
||||||
|
echo "SnipeIT Database Password: $DB_PASS"
|
||||||
|
echo "SnipeIT Database Name: $DB_NAME"
|
||||||
|
} >> ~/snipeit.creds
|
||||||
|
msg_ok "Set up database"
|
||||||
|
|
||||||
|
msg_info "Installing Snipe-IT"
|
||||||
|
cd /opt
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv snipe-it-${RELEASE} /opt/snipe-it
|
||||||
|
|
||||||
|
cd /opt/snipe-it
|
||||||
|
cp .env.example .env
|
||||||
|
IPADDRESS=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
|
sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
||||||
|
-e "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" \
|
||||||
|
-e "s|^DB_USERNAME=.*|DB_USERNAME=$DB_USER|" \
|
||||||
|
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$DB_PASS|" .env
|
||||||
|
|
||||||
|
chown -R www-data: /opt/snipe-it
|
||||||
|
chmod -R 755 /opt/snipe-it
|
||||||
|
|
||||||
|
|
||||||
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
$STD composer update --no-plugins --no-scripts
|
||||||
|
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
||||||
|
|
||||||
|
$STD php artisan key:generate --force
|
||||||
|
msg_ok "Installed SnipeIT"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
|
||||||
|
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
root /opt/snipe-it/public;
|
||||||
|
server_name $IPADDRESS;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files \$uri \$uri/ /index.php?\$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php\$ {
|
||||||
|
include fastcgi.conf;
|
||||||
|
include snippets/fastcgi-php.conf;
|
||||||
|
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
|
||||||
|
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl reload nginx
|
||||||
|
msg_ok "Configured Service"
|
||||||
|
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -28,7 +28,7 @@ $STD apt-get install -y \
|
|||||||
make \
|
make \
|
||||||
g++ \
|
g++ \
|
||||||
unpaper \
|
unpaper \
|
||||||
ocrmypdf \
|
qpdf \
|
||||||
poppler-utils
|
poppler-utils
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|||||||
51
install/the-lounge-install.sh
Normal file
51
install/the-lounge-install.sh
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
curl \
|
||||||
|
gpg \
|
||||||
|
wget \
|
||||||
|
mc
|
||||||
|
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_20.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
|
||||||
|
$STD npm install --global yarn
|
||||||
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
|
msg_info "Installing The Lounge"
|
||||||
|
cd /opt
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
wget -q https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb
|
||||||
|
$STD dpkg -i ./thelounge_${RELEASE}_all.deb
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed The Lounge"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/thelounge_${RELEASE}_all.deb
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -37,7 +37,7 @@ msg_ok "Installed Node.js"
|
|||||||
msg_info "Setting up postgresql"
|
msg_info "Setting up postgresql"
|
||||||
DB_NAME=umamidb
|
DB_NAME=umamidb
|
||||||
DB_USER=umami
|
DB_USER=umami
|
||||||
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
|
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
|
||||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
|||||||
94
install/unbound-install.sh
Normal file
94
install/unbound-install.sh
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: wimb0
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
sudo \
|
||||||
|
curl \
|
||||||
|
mc
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Unbound"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
unbound \
|
||||||
|
unbound-host
|
||||||
|
msg_info "Installed Unbound"
|
||||||
|
|
||||||
|
cat <<EOF >/etc/unbound/unbound.conf.d/unbound.conf
|
||||||
|
server:
|
||||||
|
interface: 0.0.0.0
|
||||||
|
port: 5335
|
||||||
|
do-ip6: no
|
||||||
|
hide-identity: yes
|
||||||
|
hide-version: yes
|
||||||
|
harden-referral-path: yes
|
||||||
|
cache-min-ttl: 300
|
||||||
|
cache-max-ttl: 14400
|
||||||
|
serve-expired: yes
|
||||||
|
serve-expired-ttl: 3600
|
||||||
|
prefetch: yes
|
||||||
|
prefetch-key: yes
|
||||||
|
target-fetch-policy: "3 2 1 1 1"
|
||||||
|
unwanted-reply-threshold: 10000000
|
||||||
|
rrset-cache-size: 256m
|
||||||
|
msg-cache-size: 128m
|
||||||
|
so-rcvbuf: 1m
|
||||||
|
private-address: 192.168.0.0/16
|
||||||
|
private-address: 169.254.0.0/16
|
||||||
|
private-address: 172.16.0.0/12
|
||||||
|
private-address: 10.0.0.0/8
|
||||||
|
private-address: fd00::/8
|
||||||
|
private-address: fe80::/10
|
||||||
|
access-control: 192.168.0.0/16 allow
|
||||||
|
access-control: 172.16.0.0/12 allow
|
||||||
|
access-control: 10.0.0.0/8 allow
|
||||||
|
access-control: 127.0.0.1/32 allow
|
||||||
|
chroot: ""
|
||||||
|
logfile: /var/log/unbound.log
|
||||||
|
EOF
|
||||||
|
|
||||||
|
touch /var/log/unbound.log
|
||||||
|
chown unbound:unbound /var/log/unbound.log
|
||||||
|
|
||||||
|
systemctl restart unbound
|
||||||
|
msg_ok "Installed Unbound"
|
||||||
|
|
||||||
|
msg_ok "Configuring Logrotate"
|
||||||
|
cat <<EOF >/etc/logrotate.d/unbound
|
||||||
|
/var/log/unbound.log {
|
||||||
|
daily
|
||||||
|
rotate 7
|
||||||
|
missingok
|
||||||
|
notifempty
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
sharedscripts
|
||||||
|
create 644
|
||||||
|
postrotate
|
||||||
|
/usr/sbin/unbound-control log_reopen
|
||||||
|
endscript
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl restart logrotate
|
||||||
|
msg_ok "Configured Logrotate"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -28,11 +28,24 @@ $STD apt-get update
|
|||||||
$STD apt-get install -y temurin-17-jre
|
$STD apt-get install -y temurin-17-jre
|
||||||
msg_ok "Installed Eclipse Temurin JRE"
|
msg_ok "Installed Eclipse Temurin JRE"
|
||||||
|
|
||||||
msg_info "Installing MongoDB"
|
if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
|
||||||
wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-7.0.gpg
|
msg_ok "No AVX Support Detected"
|
||||||
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list
|
msg_info "Installing MongoDB 4.4"
|
||||||
$STD apt-get update
|
if ! dpkg -l | grep -q "libssl1.1"; then
|
||||||
$STD apt-get install -y mongodb-org
|
wget -q http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1n-0+deb10u6_amd64.deb
|
||||||
|
$STD dpkg -i libssl1.1_1.1.1n-0+deb10u6_amd64.deb
|
||||||
|
fi
|
||||||
|
wget -qO- https://www.mongodb.org/static/pgp/server-4.4.asc | gpg --dearmor > /usr/share/keyrings/mongodb-server-4.4.gpg
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg] https://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" >/etc/apt/sources.list.d/mongodb-org-4.4.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y mongodb-org
|
||||||
|
else
|
||||||
|
msg_info "Installing MongoDB 7.0"
|
||||||
|
wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-7.0.gpg
|
||||||
|
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y mongodb-org
|
||||||
|
fi
|
||||||
msg_ok "Installed MongoDB"
|
msg_ok "Installed MongoDB"
|
||||||
|
|
||||||
msg_info "Installing UniFi Network Server"
|
msg_info "Installing UniFi Network Server"
|
||||||
|
|||||||
@@ -14,17 +14,19 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y sudo
|
curl \
|
||||||
$STD apt-get install -y mc
|
sudo \
|
||||||
|
mc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Zabbix"
|
msg_info "Installing Zabbix"
|
||||||
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb
|
cd /tmp
|
||||||
$STD dpkg -i zabbix-release_7.0-1+debian12_all.deb
|
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
||||||
rm zabbix-release_7.0-1+debian12_all.deb
|
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent
|
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
|
||||||
|
$STD apt-get install -y zabbix-agent2 zabbix-agent2-plugin-*
|
||||||
msg_ok "Installed Zabbix"
|
msg_ok "Installed Zabbix"
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL"
|
msg_info "Setting up PostgreSQL"
|
||||||
@@ -50,14 +52,15 @@ echo -e "zabbix Database Name: \e[32m$DB_NAME\e[0m" >>~/zabbix.creds
|
|||||||
msg_ok "Set up PostgreSQL"
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl restart zabbix-server zabbix-agent apache2
|
systemctl restart zabbix-server zabbix-agent2 apache2
|
||||||
systemctl enable -q zabbix-server zabbix-agent apache2
|
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -40,20 +40,8 @@ msg_info "Setting up Zigbee2MQTT Repository"
|
|||||||
$STD git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
|
$STD git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
|
||||||
msg_ok "Set up Zigbee2MQTT Repository"
|
msg_ok "Set up Zigbee2MQTT Repository"
|
||||||
|
|
||||||
read -r -p "Switch to Edge/dev branch? (y/N) " prompt
|
|
||||||
if [[ $prompt == "y" ]]; then
|
|
||||||
DEV="y"
|
|
||||||
else
|
|
||||||
DEV="n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Installing Zigbee2MQTT"
|
msg_info "Installing Zigbee2MQTT"
|
||||||
cd /opt/zigbee2mqtt
|
cd /opt/zigbee2mqtt
|
||||||
if [[ $DEV == "y" ]]; then
|
|
||||||
$STD git fetch origin dev:dev
|
|
||||||
$STD git checkout dev
|
|
||||||
$STD git pull
|
|
||||||
fi
|
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
msg_ok "Installed Zigbee2MQTT"
|
msg_ok "Installed Zigbee2MQTT"
|
||||||
|
|
||||||
|
|||||||
@@ -14,33 +14,43 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y sudo
|
curl \
|
||||||
$STD apt-get install -y mc
|
sudo \
|
||||||
|
mc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Z-Wave JS UI"
|
msg_info "Installing Z-Wave JS UI"
|
||||||
mkdir /opt/zwave-js-ui
|
mkdir -p /opt/zwave-js-ui
|
||||||
|
mkdir -p /opt/zwave_store
|
||||||
cd /opt/zwave-js-ui
|
cd /opt/zwave-js-ui
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
$STD wget https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip
|
wget -q https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip
|
||||||
$STD unzip zwave-js-ui-${RELEASE}-linux.zip
|
unzip -q zwave-js-ui-${RELEASE}-linux.zip
|
||||||
|
cat <<EOF >/opt/.env
|
||||||
|
ZWAVEJS_EXTERNAL_CONFIG=/opt/zwave_store/.config-db
|
||||||
|
STORE_DIR=/opt/zwave_store
|
||||||
|
EOF
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Installed Z-Wave JS UI"
|
msg_ok "Installed Z-Wave JS UI"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
service_path="/etc/systemd/system/zwave-js-ui.service"
|
cat <<EOF > /etc/systemd/system/zwave-js-ui.service
|
||||||
echo "[Unit]
|
[Unit]
|
||||||
Description=zwave-js-ui
|
Description=zwave-js-ui
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
User=root
|
User=root
|
||||||
WorkingDirectory=/opt/zwave-js-ui
|
WorkingDirectory=/opt/zwave-js-ui
|
||||||
ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
|
ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
|
||||||
|
EnvironmentFile=/opt/.env
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target" >$service_path
|
WantedBy=multi-user.target
|
||||||
systemctl start zwave-js-ui
|
EOF
|
||||||
$STD systemctl enable zwave-js-ui
|
systemctl enable -q --now zwave-js-ui
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5006",
|
"interface_port": 5006,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/807",
|
||||||
"website": "https://actualbudget.org/",
|
"website": "https://actualbudget.org/",
|
||||||
"logo": "https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-client/public/maskable-512x512.png",
|
"logo": "https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-client/public/maskable-512x512.png",
|
||||||
"description": "Actual Budget is a super fast and privacy-focused app for managing your finances. At its heart is the well proven and much loved Envelope Budgeting methodology.",
|
"description": "Actual Budget is a super fast and privacy-focused app for managing your finances. At its heart is the well proven and much loved Envelope Budgeting methodology.",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/actualbudget.sh",
|
"script": "ct/actualbudget.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,15 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "After the script finishes, reboot the LXC then run `netbird up` in the LXC console",
|
"text": "After the script finishes, reboot the LXC then run `netbird up` in the LXC console",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Execute within the Proxmox shell",
|
"text": "Execute within the Proxmox main shell",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "The script only works in Debian/Ubuntu, not in Alpine!",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,11 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "After the script finishes, reboot the LXC then run `tailscale up` in the LXC console",
|
"text": "After the script finishes, reboot the LXC then run `tailscale up` in the LXC console",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Execute within the Proxmox shell",
|
"text": "Execute within the Proxmox shell",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3000",
|
"interface_port": 3000,
|
||||||
"documentation": "https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started",
|
"documentation": "https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started",
|
||||||
"website": "https://adguard.com/en/adguard-home/overview.html",
|
"website": "https://adguard.com/en/adguard-home/overview.html",
|
||||||
"logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/adguard/icon.png",
|
"logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/adguard/icon.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/adguard.sh",
|
"script": "ct/adguard.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Adguard Home can be updated via the user interface.",
|
"text": "Adguard Home can be updated via the user interface.",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3000",
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://adventurelog.app/",
|
"website": "https://adventurelog.app/",
|
||||||
"logo": "https://raw.githubusercontent.com/seanmorley15/AdventureLog/refs/heads/main/documentation/static/img/favicon.png",
|
"logo": "https://raw.githubusercontent.com/seanmorley15/AdventureLog/refs/heads/main/documentation/static/img/favicon.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/adventurelog.sh",
|
"script": "ct/adventurelog.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "7",
|
"hdd": 7,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "AdventureLog uses an initial local IP, if you change your LXC-IP, you need to change the IP here: `/opt/adventurelog/backend/server/.env` and here: `/opt/adventurelog/frontend/.env`",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": "8090",
|
"interface_port": 8090,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.ispyconnect.com/",
|
"website": "https://www.ispyconnect.com/",
|
||||||
"logo": "https://ispycontent.azureedge.net/img/ispy2.png?raw=true",
|
"logo": "https://ispycontent.azureedge.net/img/ispy2.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/agentdvr.sh",
|
"script": "ct/agentdvr.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "ubuntu",
|
"os": "ubuntu",
|
||||||
"version": "22.04"
|
"version": "22.04"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Resource and network settings are adjustable post LXC creation.",
|
"text": "Resource and network settings are adjustable post LXC creation.",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/alpine.sh",
|
"script": "ct/alpine.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "0.1",
|
"hdd": 0.1,
|
||||||
"os": "alpine",
|
"os": "alpine",
|
||||||
"version": "3.19"
|
"version": "3.19"
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": "alpine"
|
"password": "alpine"
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "To Update Alpine: `apk update && apk upgrade`",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/apache-cassandra.sh",
|
"script": "ct/apache-cassandra.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Apache-Cassandra Configuration: `nano /etc/cassandra/cassandra.yaml`",
|
"text": "Apache-Cassandra Configuration: `nano /etc/cassandra/cassandra.yaml`",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5984",
|
"interface_port": 5984,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://couchdb.apache.org/",
|
"website": "https://couchdb.apache.org/",
|
||||||
"logo": "https://couchdb.apache.org/image/couch@2x.png",
|
"logo": "https://couchdb.apache.org/image/couch@2x.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/apache-couchdb.sh",
|
"script": "ct/apache-couchdb.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "4096",
|
"ram": 4096,
|
||||||
"hdd": "10",
|
"hdd": 10,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Show Login Credentials: `cat CouchDB.creds`",
|
"text": "Show Login Credentials: `cat CouchDB.creds`",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3142",
|
"interface_port": 3142,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.unix-ag.uni-kl.de/~bloch/acng/",
|
"website": "https://www.unix-ag.uni-kl.de/~bloch/acng/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/apt-cacher-ng.sh",
|
"script": "ct/apt-cacher-ng.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/archivebox.sh",
|
"script": "ct/archivebox.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "6880",
|
"interface_port": 6880,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://aria2.github.io/",
|
"website": "https://aria2.github.io/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/aria2.sh",
|
"script": "ct/aria2.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1028",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Within the LXC console, run `cat rpc.secret` to display the rpc-secret. Copy this token and paste it into the Aria2 RPC Secret Token box within the AriaNG Settings. Then, click the reload AriaNG button.",
|
"text": "Within the LXC console, run `cat rpc.secret` to display the rpc-secret. Copy this token and paste it into the Aria2 RPC Secret Token box within the AriaNG Settings. Then, click the reload AriaNG button.",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,8 +8,8 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "13378",
|
"interface_port": 13378,
|
||||||
"documentation": null,
|
"documentation": "https://www.audiobookshelf.org/guides/",
|
||||||
"website": "https://www.audiobookshelf.org/",
|
"website": "https://www.audiobookshelf.org/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/audiobookshelf.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/audiobookshelf.svg",
|
||||||
"description": "Audiobookshelf is a Self-hosted audiobook and podcast server.",
|
"description": "Audiobookshelf is a Self-hosted audiobook and podcast server.",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/audiobookshelf.sh",
|
"script": "ct/audiobookshelf.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "7474",
|
"interface_port": 7474,
|
||||||
"documentation": null,
|
"documentation": "https://autobrr.com/configuration/autobrr",
|
||||||
"website": "https://autobrr.com/",
|
"website": "https://autobrr.com/",
|
||||||
"logo": "https://raw.githubusercontent.com/autobrr/autobrr/master/.github/images/logo.png",
|
"logo": "https://raw.githubusercontent.com/autobrr/autobrr/master/.github/images/logo.png",
|
||||||
"description": "Autobrr is a torrent downloading tool that automates the process of downloading torrents. It is designed to be modern and user-friendly, providing users with a convenient and efficient way to download torrent files. With Autobrr, you can schedule and manage your torrent downloads, and have the ability to automatically download torrents based on certain conditions, such as time of day or availability of seeds. This can save you time and effort, allowing you to focus on other tasks while your torrents are being downloaded in the background.",
|
"description": "Autobrr is a torrent downloading tool that automates the process of downloading torrents. It is designed to be modern and user-friendly, providing users with a convenient and efficient way to download torrent files. With Autobrr, you can schedule and manage your torrent downloads, and have the ability to automatically download torrents based on certain conditions, such as time of day or availability of seeds. This can save you time and effort, allowing you to focus on other tasks while your torrents are being downloaded in the background.",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/autobrr.sh",
|
"script": "ct/autobrr.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "6767",
|
"interface_port": 6767,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.bazarr.media/",
|
"website": "https://www.bazarr.media/",
|
||||||
"logo": "https://www.bazarr.media/assets/img/logo.png",
|
"logo": "https://www.bazarr.media/assets/img/logo.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/bazarr.sh",
|
"script": "ct/bazarr.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "4000",
|
"interface_port": 4000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://0xerr0r.github.io/blocky/",
|
"website": "https://0xerr0r.github.io/blocky/",
|
||||||
"logo": "https://raw.githubusercontent.com/0xERR0R/blocky/main/docs/blocky.svg",
|
"logo": "https://raw.githubusercontent.com/0xERR0R/blocky/main/docs/blocky.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/blocky.sh",
|
"script": "ct/blocky.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Blocky Configuration Path: `/opt/blocky/config.yml`",
|
"text": "Blocky Configuration Path: `/opt/blocky/config.yml`",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "80",
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.bookstackapp.com/",
|
"website": "https://www.bookstackapp.com/",
|
||||||
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fassets.stickpng.com%2Fimages%2F6308b74c61b3e2a522f0145e.png&f=1&nofb=1&ipt=7ce7870e5081489216eb3294b735356d1c7ede678f97cadba4392bd96e032170&ipo=images",
|
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fassets.stickpng.com%2Fimages%2F6308b74c61b3e2a522f0145e.png&f=1&nofb=1&ipt=7ce7870e5081489216eb3294b735356d1c7ede678f97cadba4392bd96e032170&ipo=images",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/bookstack.sh",
|
"script": "ct/bookstack.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/bunkerweb.sh",
|
"script": "ct/bunkerweb.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "80",
|
"interface_port": 80,
|
||||||
"documentation": "https://caddyserver.com/docs/",
|
"documentation": "https://caddyserver.com/docs/",
|
||||||
"website": "https://caddyserver.com/",
|
"website": "https://caddyserver.com/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/caddy.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/caddy.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/caddy.sh",
|
"script": "ct/caddy.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8083",
|
"interface_port": 8083,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/janeczku/calibre-web",
|
"website": "https://github.com/janeczku/calibre-web",
|
||||||
"logo": "https://sasquatters.com/media/2017/04/Calibre-web-banner-768x512.jpg",
|
"logo": "https://sasquatters.com/media/2017/04/Calibre-web-banner-768x512.jpg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/calibre-web.sh",
|
"script": "ct/calibre-web.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Add Calibre-Web Extras via `update`",
|
"text": "Add Calibre-Web Extras via `update`",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "80",
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.casaos.io/",
|
"website": "https://www.casaos.io/",
|
||||||
"logo": "https://wiki.casaos.io/_assets/casaos-no-text.svg",
|
"logo": "https://wiki.casaos.io/_assets/casaos-no-text.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/casaos.sh",
|
"script": "ct/casaos.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5000",
|
"interface_port": 5000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://changedetection.io/",
|
"website": "https://changedetection.io/",
|
||||||
"logo": "https://github.com/dgtlmoon/changedetection.io/blob/master/changedetectionio/static/images/avatar-256x256.png?raw=true",
|
"logo": "https://github.com/dgtlmoon/changedetection.io/blob/master/changedetectionio/static/images/avatar-256x256.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/changedetection.sh",
|
"script": "ct/changedetection.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": "8089",
|
"interface_port": 8089,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://getchannels.com/dvr-server/",
|
"website": "https://getchannels.com/dvr-server/",
|
||||||
"logo": "https://getchannels.com/a/images/channels-logo.svg",
|
"logo": "https://getchannels.com/a/images/channels-logo.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/channels.sh",
|
"script": "ct/channels.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Execute within the Proxmox shell",
|
"text": "Execute within the Proxmox shell",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/cloudflared.sh",
|
"script": "ct/cloudflared.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "9090",
|
"interface_port": 9090,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://cockpit-project.org/",
|
"website": "https://cockpit-project.org/",
|
||||||
"logo": "https://i0.wp.com/easycode.page/wp-content/uploads/2021/10/cockpit.png?fit=400%2C400&ssl=1",
|
"logo": "https://i0.wp.com/easycode.page/wp-content/uploads/2021/10/cockpit.png?fit=400%2C400&ssl=1",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/cockpit.sh",
|
"script": "ct/cockpit.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Set a root password if using autologin. This will be the Cockpit password.`sudo passwd root`",
|
"text": "Set a root password if using autologin. This will be the Cockpit password.`sudo passwd root`",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "misc",
|
"type": "misc",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8680",
|
"interface_port": 8680,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": null,
|
"website": null,
|
||||||
"logo": "https://user-images.githubusercontent.com/674621/71187801-14e60a80-2280-11ea-94c9-e56576f76baf.png",
|
"logo": "https://user-images.githubusercontent.com/674621/71187801-14e60a80-2280-11ea-94c9-e56576f76baf.png",
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Collabora Online",
|
|
||||||
"slug": "collabora-online",
|
|
||||||
"categories": [],
|
|
||||||
"date_created": "2024-09-05",
|
|
||||||
"type": "LXC",
|
|
||||||
"updateable": 1,
|
|
||||||
"privileged": 0,
|
|
||||||
"interface_port": "9980",
|
|
||||||
"documentation": "",
|
|
||||||
"website": "https://www.collaboraonline.com/collabora-online/",
|
|
||||||
"logo": "https://wiki.calculate-linux.org/download_images/original/collabora-logo.png",
|
|
||||||
"description": "Collabora Online is a cloud-based office suite that enables real-time collaboration on documents, spreadsheets, and presentations. It supports multiple formats and integrates with platforms like Nextcloud and SharePoint",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "bash -c \"$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/collabora-online.sh)\"",
|
|
||||||
"resources": {
|
|
||||||
"cpu": "",
|
|
||||||
"ram": "",
|
|
||||||
"hdd": "",
|
|
||||||
"os": "",
|
|
||||||
"version": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": "admin",
|
|
||||||
"password": "admin"
|
|
||||||
},
|
|
||||||
"alerts": []
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Collabora Online",
|
|
||||||
"slug": "collabora-online",
|
|
||||||
"categories": [],
|
|
||||||
"date_created": "2024-09-05",
|
|
||||||
"type": "LXC",
|
|
||||||
"updateable": 1,
|
|
||||||
"privileged": 0,
|
|
||||||
"interface_port": "9980",
|
|
||||||
"documentation": "",
|
|
||||||
"website": "https://www.collaboraonline.com/collabora-online/",
|
|
||||||
"logo": "https://wiki.calculate-linux.org/download_images/original/collabora-logo.png",
|
|
||||||
"description": "Collabora Online is a cloud-based office suite that enables real-time collaboration on documents, spreadsheets, and presentations. It supports multiple formats and integrates with platforms like Nextcloud and SharePoint",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "bash -c \"$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/collabora-online.sh)\"",
|
|
||||||
"resources": {
|
|
||||||
"cpu": "",
|
|
||||||
"ram": "",
|
|
||||||
"hdd": "",
|
|
||||||
"os": "",
|
|
||||||
"version": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": "admin",
|
|
||||||
"password": "admin"
|
|
||||||
},
|
|
||||||
"alerts": []
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8082",
|
"interface_port": 8082,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.commafeed.com/",
|
"website": "https://www.commafeed.com/",
|
||||||
"logo": "https://raw.githubusercontent.com/Athou/commafeed/master/commafeed-client/public/app-icon-144.png",
|
"logo": "https://raw.githubusercontent.com/Athou/commafeed/master/commafeed-client/public/app-icon-144.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/commafeed.sh",
|
"script": "ct/commafeed.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,11 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Execute within the Proxmox shell",
|
"text": "Execute within the Proxmox shell",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c '$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/misc/update-lxcs-cron.sh)' -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`",
|
"text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c '$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/misc/update-lxcs-cron.sh)' -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3012",
|
"interface_port": 3012,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/jhuckaby/Cronicle",
|
"website": "https://github.com/jhuckaby/Cronicle",
|
||||||
"logo": "https://github.com/jhuckaby/Cronicle/blob/master/htdocs/images/logo-128.png?raw=true",
|
"logo": "https://github.com/jhuckaby/Cronicle/blob/master/htdocs/images/logo-128.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/cronicle.sh",
|
"script": "ct/cronicle.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -32,12 +32,8 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Primary and Worker Private Keys Must Match.",
|
"text": "Configuration Path: `/opt/cronicle/conf/config.json` (Primary and Worker Private Keys Must Match)",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "Configuration Path: `/opt/cronicle/conf/config.json`",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,9 +8,9 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8084",
|
"interface_port": 8084,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": null,
|
"website": "https://daemonsync.me/",
|
||||||
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fimg.informer.com%2Ficons_mac%2Fpng%2F128%2F350%2F350335.png&f=1&nofb=1",
|
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fimg.informer.com%2Ficons_mac%2Fpng%2F128%2F350%2F350335.png&f=1&nofb=1",
|
||||||
"description": "Sync files from app to server, share photos & videos, back up your data and stay secure inside local network.",
|
"description": "Sync files from app to server, share photos & videos, back up your data and stay secure inside local network.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/daemonsync.sh",
|
"script": "ct/daemonsync.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "4000",
|
"interface_port": 4000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://dashy.to/",
|
"website": "https://dashy.to/",
|
||||||
"logo": "https://github.com/Lissy93/dashy/raw/master/public/web-icons/dashy-logo.png",
|
"logo": "https://github.com/Lissy93/dashy/raw/master/public/web-icons/dashy-logo.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/dashy.sh",
|
"script": "ct/dashy.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "6",
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user