mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-02-06 15:59:17 +00:00
Merge branch 'community-scripts:main' into main
This commit is contained in:
commit
632c14dce0
62
CHANGELOG.md
62
CHANGELOG.md
@ -16,6 +16,68 @@ All LXC instances created using this repository come pre-installed with Midnight
|
||||
> [!IMPORTANT]
|
||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||
|
||||
## 2024-11-28
|
||||
|
||||
### Changed
|
||||
|
||||
### 🚀 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))
|
||||
- Fix Z-Wave JS UI script [@MickLesk](https://github.com/MickLesk) ([#546](https://github.com/community-scripts/ProxmoxVE/pull/546))
|
||||
|
||||
### 🌐 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
|
||||
|
||||
### Changed
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Fix Vikunja install script to prevent database deletion upon updating [@vhsdream](https://github.com/vhsdream) ([#524](https://github.com/community-scripts/ProxmoxVE/pull/524))
|
||||
|
||||
## 2024-11-25
|
||||
|
||||
### Changed
|
||||
|
||||
### 💥 Breaking Changes
|
||||
|
||||
- Remove Scrypted script [@MickLesk](https://github.com/MickLesk) ([#511](https://github.com/community-scripts/ProxmoxVE/pull/511))
|
||||
- Because of request from Scrypted maintainer: [#494](https://github.com/community-scripts/ProxmoxVE/issues/494)
|
||||
- Official Scrypted script can be used instead: https://docs.scrypted.app/installation.html#proxmox-ve
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Fix bugs in Calibre-Web update [@havardthom](https://github.com/havardthom) ([#517](https://github.com/community-scripts/ProxmoxVE/pull/517))
|
||||
- Fix upload folder in listmonk LXC [@bvdberg01](https://github.com/bvdberg01) ([#515](https://github.com/community-scripts/ProxmoxVE/pull/515))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- Fix website url in Zoraxy documentation [@miggi92](https://github.com/miggi92) ([#506](https://github.com/community-scripts/ProxmoxVE/pull/506))
|
||||
|
||||
## 2024-11-24
|
||||
|
||||
### Changed
|
||||
|
@ -20,7 +20,7 @@ echo -e "Loading..."
|
||||
APP="Aria2"
|
||||
var_disk="8"
|
||||
var_cpu="2"
|
||||
var_ram="1028"
|
||||
var_ram="1024"
|
||||
var_os="debian"
|
||||
var_version="12"
|
||||
variables
|
||||
|
@ -61,11 +61,14 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP LXC"
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop cps
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/kepubify
|
||||
rm kepubify-linux-64bit
|
||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit &>/dev/null
|
||||
rm -rf kepubify-linux-64bit
|
||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit
|
||||
chmod +x kepubify-linux-64bit
|
||||
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
|
||||
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
|
||||
@ -140,16 +143,19 @@ function update_script() {
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ ! -z "$options" ] && [ ${#options[@]} -gt 0 ]; then
|
||||
if [ ${#options[@]} -gt 0 ]; then
|
||||
cps_options=$(IFS=, ; echo "${options[*]}")
|
||||
echo $cps_options > /opt/calibre-web/options.txt
|
||||
pip install --upgrade calibreweb[$cps_options]
|
||||
pip install --upgrade calibreweb[$cps_options] &>/dev/null
|
||||
else
|
||||
rm /opt/calibre-web/options.txt 2> /dev/null
|
||||
pip install --upgrade calibreweb
|
||||
rm -rf /opt/calibre-web/options.txt
|
||||
pip install --upgrade calibreweb &>/dev/null
|
||||
fi
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start cps
|
||||
msg_ok "Updated $APP LXC"
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
|
@ -66,8 +66,12 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
cd /opt
|
||||
mv /opt/listmonk/ /opt/listmonk-backup
|
||||
mkdir /opt/listmonk/
|
||||
wget -q "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
||||
tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk
|
||||
mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml
|
||||
mv /opt/listmonk-backup/uploads /opt/listmonk/uploads
|
||||
/opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml &>/dev/null
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
@ -78,6 +82,7 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
||||
rm -rf /opt/listmonk-backup/
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
|
@ -52,6 +52,26 @@ function default_settings() {
|
||||
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
|
||||
build_container
|
||||
description
|
||||
|
@ -1,74 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2024 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT
|
||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
function header_info {
|
||||
clear
|
||||
cat <<"EOF"
|
||||
_____ __ __
|
||||
/ ___/____________ ______ / /____ ____/ /
|
||||
\__ \/ ___/ ___/ / / / __ \/ __/ _ \/ __ /
|
||||
___/ / /__/ / / /_/ / /_/ / /_/ __/ /_/ /
|
||||
/____/\___/_/ \__, / .___/\__/\___/\__,_/
|
||||
/____/_/
|
||||
|
||||
EOF
|
||||
}
|
||||
header_info
|
||||
echo -e "Loading..."
|
||||
APP="Scrypted"
|
||||
var_disk="8"
|
||||
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/scrypted.service ]]; 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 Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${APP} should be reachable by going to the following URL.
|
||||
${BL}https://${IP}:10443${CL} \n"
|
@ -17,10 +17,6 @@ cat <<"EOF"
|
||||
EOF
|
||||
}
|
||||
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..."
|
||||
APP="Unifi"
|
||||
var_disk="8"
|
||||
|
27
ct/zabbix.sh
27
ct/zabbix.sh
@ -57,11 +57,32 @@ header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
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"
|
||||
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 -y upgrade &>/dev/null
|
||||
systemctl restart zabbix-server
|
||||
msg_ok "Updated $APP LXC"
|
||||
apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
@ -53,44 +53,33 @@ function default_settings() {
|
||||
}
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/zwave-js-ui ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
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) }')
|
||||
msg_info "Stopping Z-wave JS UI"
|
||||
systemctl stop zwave-js-ui.service
|
||||
msg_ok "Stopped Z-wave JS UI"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/zwave-js-ui ]]; then msg_error "No ${APP} Installation Found!"; exit; 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) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop zwave-js-ui
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
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
|
||||
unzip zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
|
||||
\cp -R zwave-js-ui-linux /opt/zwave-js-ui
|
||||
service_path="/etc/systemd/system/zwave-js-ui.service"
|
||||
echo "[Unit]
|
||||
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 "Updating Z-Wave JS UI"
|
||||
rm -rf /opt/zwave-js-ui/*
|
||||
cd /opt/zwave-js-ui
|
||||
wget -q https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip
|
||||
unzip -q zwave-js-ui-${RELEASE}-linux.zip
|
||||
msg_ok "Updated Z-Wave JS UI"
|
||||
|
||||
msg_info "Starting Z-wave JS UI"
|
||||
systemctl enable --now zwave-js-ui.service
|
||||
msg_ok "Started Z-wave JS UI"
|
||||
msg_info "Starting Service"
|
||||
systemctl start zwave-js-ui
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleanup"
|
||||
rm -rf zwave-js-ui-${RELEASE}-linux.zip zwave-js-ui-linux store
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully!\n"
|
||||
exit
|
||||
msg_info "Cleanup"
|
||||
rm -rf /opt/zwave-js-ui/zwave-js-ui-${RELEASE}-linux.zip
|
||||
rm -rf /opt/zwave-js-ui/store
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully!\n"
|
||||
exit
|
||||
}
|
||||
|
||||
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",
|
||||
"start": "next start",
|
||||
"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",
|
||||
"format:write": "prettier --write \"**/*.{ts,tsx,mdx}\" --cache",
|
||||
"format:check": "prettier --check \"**/*.{ts,tsx,mdx}\" --cache",
|
||||
@ -59,20 +60,26 @@
|
||||
"zod": "^3.23.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/dom": "^10.4.0",
|
||||
"@testing-library/react": "^16.0.1",
|
||||
"@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": "npm:types-react@19.0.0-rc.1",
|
||||
"@typescript-eslint/eslint-plugin": "^8.8.1",
|
||||
"@typescript-eslint/parser": "^8.8.1",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"eslint-config-next": "15.0.2",
|
||||
"postcss": "^8",
|
||||
"eslint": "^9.13.0",
|
||||
"prettier": "^3.2.5",
|
||||
"jsdom": "^25.0.1",
|
||||
"postcss": "^8",
|
||||
"prettier-plugin-tailwindcss": "^0.6.5",
|
||||
"tailwindcss": "^3.4.9",
|
||||
"prettier": "^3.2.5",
|
||||
"tailwindcss-animate": "^1.0.7",
|
||||
"tailwindcss-animated": "^1.1.2",
|
||||
"typescript": "^5"
|
||||
"tailwindcss": "^3.4.9",
|
||||
"typescript": "^5",
|
||||
"vite-tsconfig-paths": "^5.1.3",
|
||||
"vitest": "^2.1.6"
|
||||
},
|
||||
"overrides": {
|
||||
"@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 { cn } from "@/lib/utils";
|
||||
import { z } from "zod";
|
||||
import { ScriptSchema } from "../_schemas/schemas";
|
||||
import { type Script } from "../_schemas/schemas";
|
||||
import { memo } from "react";
|
||||
|
||||
type Script = z.infer<typeof ScriptSchema>;
|
||||
|
||||
type CategoryProps = {
|
||||
script: Script;
|
||||
setScript: (script: Script) => void;
|
||||
|
@ -9,11 +9,9 @@ import {
|
||||
} from "@/components/ui/select";
|
||||
import { OperatingSystems } from "@/config/siteConfig";
|
||||
import { PlusCircle, Trash2 } from "lucide-react";
|
||||
import { memo, useCallback, useEffect, useRef } from "react";
|
||||
import { memo, useCallback, useRef } from "react";
|
||||
import { z } from "zod";
|
||||
import { InstallMethodSchema, ScriptSchema } from "../_schemas/schemas";
|
||||
|
||||
type Script = z.infer<typeof ScriptSchema>;
|
||||
import { InstallMethodSchema, ScriptSchema, type Script } from "../_schemas/schemas";
|
||||
|
||||
type InstallMethodProps = {
|
||||
script: Script;
|
||||
@ -194,11 +192,11 @@ function InstallMethod({
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<Select
|
||||
value={method.resources.version ? String(method.resources.version) : undefined}
|
||||
value={method.resources.version || undefined}
|
||||
onValueChange={(value) =>
|
||||
updateInstallMethod(index, "resources", {
|
||||
...method.resources,
|
||||
version: value ? Number(value) : null,
|
||||
version: value || null,
|
||||
})
|
||||
}
|
||||
disabled={method.type === "alpine"}
|
||||
|
@ -11,11 +11,9 @@ import { AlertColors } from "@/config/siteConfig";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { PlusCircle, Trash2 } from "lucide-react";
|
||||
import { z } from "zod";
|
||||
import { ScriptSchema } from "../_schemas/schemas";
|
||||
import { ScriptSchema, type Script } from "../_schemas/schemas";
|
||||
import { memo, useCallback } from "react";
|
||||
|
||||
type Script = z.infer<typeof ScriptSchema>;
|
||||
|
||||
type NoteProps = {
|
||||
script: Script;
|
||||
setScript: (script: Script) => void;
|
||||
|
@ -10,7 +10,7 @@ export const InstallMethodSchema = z.object({
|
||||
ram: z.number().nullable(),
|
||||
hdd: z.number().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"),
|
||||
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"),
|
||||
type: z.enum(["vm", "ct", "misc"], {
|
||||
errorMap: () => ({ message: "Type must be either 'vm', 'ct', or 'misc'" })
|
||||
type: z.enum(["vm", "ct", "misc", "turnkey"], {
|
||||
errorMap: () => ({ message: "Type must be either 'vm', 'ct', 'misc' or 'turnkey'" })
|
||||
}),
|
||||
updateable: z.boolean(),
|
||||
privileged: z.boolean(),
|
||||
@ -41,3 +41,5 @@ export const ScriptSchema = z.object({
|
||||
}),
|
||||
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 { Input } from "@/components/ui/input";
|
||||
import { Label } from "@/components/ui/label";
|
||||
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
||||
import {
|
||||
Popover,
|
||||
PopoverContent,
|
||||
PopoverTrigger,
|
||||
} from "@/components/ui/popover";
|
||||
import {
|
||||
Select,
|
||||
SelectContent,
|
||||
@ -26,9 +30,7 @@ import { z } from "zod";
|
||||
import Categories from "./_components/Categories";
|
||||
import InstallMethod from "./_components/InstallMethod";
|
||||
import Note from "./_components/Note";
|
||||
import { ScriptSchema } from "./_schemas/schemas";
|
||||
|
||||
type Script = z.infer<typeof ScriptSchema>;
|
||||
import { ScriptSchema, type Script } from "./_schemas/schemas";
|
||||
|
||||
const initialScript: Script = {
|
||||
name: "",
|
||||
@ -64,25 +66,29 @@ export default function JSONGenerator() {
|
||||
.catch((error) => console.error("Error fetching categories:", error));
|
||||
}, []);
|
||||
|
||||
const updateScript = useCallback((key: keyof Script, value: Script[keyof Script]) => {
|
||||
setScript((prev) => {
|
||||
const updated = { ...prev, [key]: value };
|
||||
const updateScript = useCallback(
|
||||
(key: keyof Script, value: Script[keyof Script]) => {
|
||||
setScript((prev) => {
|
||||
const updated = { ...prev, [key]: value };
|
||||
|
||||
if (key === "type" || key === "slug") {
|
||||
updated.install_methods = updated.install_methods.map((method) => ({
|
||||
...method,
|
||||
script: method.type === "alpine"
|
||||
? `/${updated.type}/alpine-${updated.slug}.sh`
|
||||
: `/${updated.type}/${updated.slug}.sh`,
|
||||
}));
|
||||
}
|
||||
if (key === "type" || key === "slug") {
|
||||
updated.install_methods = updated.install_methods.map((method) => ({
|
||||
...method,
|
||||
script:
|
||||
method.type === "alpine"
|
||||
? `/${updated.type}/alpine-${updated.slug}.sh`
|
||||
: `/${updated.type}/${updated.slug}.sh`,
|
||||
}));
|
||||
}
|
||||
|
||||
const result = ScriptSchema.safeParse(updated);
|
||||
setIsValid(result.success);
|
||||
setZodErrors(result.success ? null : result.error);
|
||||
return updated;
|
||||
});
|
||||
}, []);
|
||||
const result = ScriptSchema.safeParse(updated);
|
||||
setIsValid(result.success);
|
||||
setZodErrors(result.success ? null : result.error);
|
||||
return updated;
|
||||
});
|
||||
},
|
||||
[],
|
||||
);
|
||||
|
||||
const handleCopy = useCallback(() => {
|
||||
navigator.clipboard.writeText(JSON.stringify(script, null, 2));
|
||||
@ -91,37 +97,43 @@ export default function JSONGenerator() {
|
||||
toast.success("Copied metadata to clipboard");
|
||||
}, [script]);
|
||||
|
||||
const handleDateSelect = useCallback((date: Date | undefined) => {
|
||||
updateScript(
|
||||
"date_created",
|
||||
format(date || new Date(), "yyyy-MM-dd")
|
||||
);
|
||||
}, [updateScript]);
|
||||
|
||||
const formattedDate = useMemo(() =>
|
||||
script.date_created ? format(script.date_created, "PPP") : undefined,
|
||||
[script.date_created]
|
||||
const handleDateSelect = useCallback(
|
||||
(date: Date | undefined) => {
|
||||
updateScript("date_created", format(date || new Date(), "yyyy-MM-dd"));
|
||||
},
|
||||
[updateScript],
|
||||
);
|
||||
|
||||
const validationAlert = useMemo(() => (
|
||||
<Alert className={cn("text-black", isValid ? "bg-green-100" : "bg-red-100")}>
|
||||
<AlertTitle>{isValid ? "Valid JSON" : "Invalid JSON"}</AlertTitle>
|
||||
<AlertDescription>
|
||||
{isValid
|
||||
? "The current JSON is valid according to the schema."
|
||||
: "The current JSON does not match the required schema."}
|
||||
</AlertDescription>
|
||||
{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]);
|
||||
const formattedDate = useMemo(
|
||||
() =>
|
||||
script.date_created ? format(script.date_created, "PPP") : undefined,
|
||||
[script.date_created],
|
||||
);
|
||||
|
||||
const validationAlert = useMemo(
|
||||
() => (
|
||||
<Alert
|
||||
className={cn("text-black", isValid ? "bg-green-100" : "bg-red-100")}
|
||||
>
|
||||
<AlertTitle>{isValid ? "Valid JSON" : "Invalid JSON"}</AlertTitle>
|
||||
<AlertDescription>
|
||||
{isValid
|
||||
? "The current JSON is valid according to the schema."
|
||||
: "The current JSON does not match the required schema."}
|
||||
</AlertDescription>
|
||||
{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 (
|
||||
<div className="flex h-screen mt-20">
|
||||
@ -222,14 +234,18 @@ export default function JSONGenerator() {
|
||||
<div className="flex items-center space-x-2">
|
||||
<Switch
|
||||
checked={script.updateable}
|
||||
onCheckedChange={(checked) => updateScript("updateable", checked)}
|
||||
onCheckedChange={(checked) =>
|
||||
updateScript("updateable", checked)
|
||||
}
|
||||
/>
|
||||
<label>Updateable</label>
|
||||
</div>
|
||||
<div className="flex items-center space-x-2">
|
||||
<Switch
|
||||
checked={script.privileged}
|
||||
onCheckedChange={(checked) => updateScript("privileged", checked)}
|
||||
onCheckedChange={(checked) =>
|
||||
updateScript("privileged", checked)
|
||||
}
|
||||
/>
|
||||
<label>Privileged</label>
|
||||
</div>
|
||||
@ -238,7 +254,12 @@ export default function JSONGenerator() {
|
||||
placeholder="Interface Port"
|
||||
type="number"
|
||||
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">
|
||||
<Input
|
||||
@ -249,7 +270,9 @@ export default function JSONGenerator() {
|
||||
<Input
|
||||
placeholder="Documentation URL"
|
||||
value={script.documentation || ""}
|
||||
onChange={(e) => updateScript("documentation", e.target.value || null)}
|
||||
onChange={(e) =>
|
||||
updateScript("documentation", e.target.value || null)
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
<InstallMethod
|
||||
@ -262,18 +285,22 @@ export default function JSONGenerator() {
|
||||
<Input
|
||||
placeholder="Username"
|
||||
value={script.default_credentials.username || ""}
|
||||
onChange={(e) => updateScript("default_credentials", {
|
||||
...script.default_credentials,
|
||||
username: e.target.value || null,
|
||||
})}
|
||||
onChange={(e) =>
|
||||
updateScript("default_credentials", {
|
||||
...script.default_credentials,
|
||||
username: e.target.value || null,
|
||||
})
|
||||
}
|
||||
/>
|
||||
<Input
|
||||
placeholder="Password"
|
||||
value={script.default_credentials.password || ""}
|
||||
onChange={(e) => updateScript("default_credentials", {
|
||||
...script.default_credentials,
|
||||
password: e.target.value || null,
|
||||
})}
|
||||
onChange={(e) =>
|
||||
updateScript("default_credentials", {
|
||||
...script.default_credentials,
|
||||
password: e.target.value || null,
|
||||
})
|
||||
}
|
||||
/>
|
||||
<Note
|
||||
script={script}
|
||||
|
@ -20,7 +20,7 @@ export const navbarLinks = [
|
||||
{
|
||||
href: `https://github.com/community-scripts/${basePath}/blob/main/CHANGELOG.md`,
|
||||
event: "Change Log",
|
||||
icon: <Scroll className="h-4 w-4 hidden sm:block" />,
|
||||
icon: <Scroll className="h-4 w-4" />,
|
||||
text: "Change Log",
|
||||
},
|
||||
{
|
||||
|
@ -21,7 +21,7 @@ export type Script = {
|
||||
ram: number | null;
|
||||
hdd: number | null;
|
||||
os: string | null;
|
||||
version: number | null;
|
||||
version: string | null;
|
||||
};
|
||||
}[];
|
||||
default_credentials: {
|
||||
|
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"]
|
||||
},
|
||||
})
|
@ -38,6 +38,7 @@ msg_ok "Set up PostgreSQL"
|
||||
msg_info "Installing listmonk"
|
||||
cd /opt
|
||||
mkdir /opt/listmonk
|
||||
mkdir /opt/listmonk/uploads
|
||||
RELEASE=$(curl -s https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
wget -q "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
||||
tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk
|
||||
|
@ -21,6 +21,11 @@ $STD apt-get install -y gpg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
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-clients
|
||||
cat <<EOF >/etc/mosquitto/conf.d/default.conf
|
||||
|
@ -20,8 +20,8 @@ $STD apt-get install -y mc
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
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) }')
|
||||
wget -q https://github.com/pocketbase/pocketbase/releases/download/v${RELEASE}/pocketbase_${RELEASE}_linux_amd64.zip -O /tmp/pocketbase.zip
|
||||
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
|
||||
mkdir -p /opt/pocketbase/{pb_public,pb_migrations,pb_hooks}
|
||||
unzip -q -o /tmp/pocketbase.zip -d /opt/pocketbase
|
||||
|
||||
@ -49,6 +49,7 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /tmp/pocketbase.zip
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -1,136 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2024 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# 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 (Patience)"
|
||||
$STD apt-get -y install software-properties-common apt-utils
|
||||
$STD apt-get -y update
|
||||
$STD apt-get -y upgrade
|
||||
$STD apt-get install -y avahi-daemon
|
||||
$STD apt-get -y install \
|
||||
build-essential \
|
||||
gcc \
|
||||
gir1.2-gtk-3.0 \
|
||||
libcairo2-dev \
|
||||
libgirepository1.0-dev \
|
||||
libglib2.0-dev \
|
||||
libjpeg-dev \
|
||||
libgif-dev \
|
||||
libopenjp2-7 \
|
||||
libpango1.0-dev \
|
||||
librsvg2-dev \
|
||||
pkg-config \
|
||||
curl \
|
||||
sudo \
|
||||
mc \
|
||||
ca-certificates \
|
||||
gpg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting Up Hardware Acceleration"
|
||||
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
chgrp video /dev/dri
|
||||
chmod 755 /dev/dri
|
||||
chmod 660 /dev/dri/*
|
||||
$STD adduser $(id -u -n) video
|
||||
$STD adduser $(id -u -n) render
|
||||
fi
|
||||
msg_ok "Set Up Hardware Acceleration"
|
||||
|
||||
msg_info "Installing GStreamer (Patience)"
|
||||
$STD apt-get -y install \
|
||||
gstreamer1.0-tools \
|
||||
libgstreamer1.0-dev \
|
||||
libgstreamer-plugins-base1.0-dev \
|
||||
libgstreamer-plugins-bad1.0-dev \
|
||||
gstreamer1.0-plugins-base \
|
||||
gstreamer1.0-plugins-good \
|
||||
gstreamer1.0-plugins-bad \
|
||||
gstreamer1.0-plugins-ugly \
|
||||
gstreamer1.0-libav \
|
||||
gstreamer1.0-alsa
|
||||
msg_ok "Installed GStreamer"
|
||||
|
||||
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
|
||||
msg_ok "Installed Node.js"
|
||||
|
||||
msg_info "Updating Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Updated Python3"
|
||||
|
||||
msg_info "Installing Python3 Dependencies"
|
||||
$STD apt-get -y install \
|
||||
python3-gi \
|
||||
python3-gst-1.0 \
|
||||
python3-matplotlib \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pil \
|
||||
python3-setuptools \
|
||||
python3-skimage \
|
||||
python3-wheel
|
||||
$STD python3 -m pip install --upgrade pip
|
||||
$STD python3 -m pip install aiofiles debugpy typing_extensions typing
|
||||
msg_ok "Installed Python3 Dependencies"
|
||||
|
||||
msg_info "Installing Scrypted"
|
||||
$STD npx -y scrypted@latest install-server
|
||||
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
sed -i -e 's/^sgx:x:104:$/render:x:104:root/' -e 's/^render:x:106:root$/sgx:x:106:/' /etc/group
|
||||
else
|
||||
sed -i -e 's/^sgx:x:104:$/render:x:104:/' -e 's/^render:x:106:$/sgx:x:106:/' /etc/group
|
||||
fi
|
||||
msg_ok "Installed Scrypted"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/scrypted.service
|
||||
[Unit]
|
||||
Description=Scrypted service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=root
|
||||
Group=root
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/npx -y scrypted serve
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now scrypted.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"
|
@ -28,11 +28,25 @@ $STD apt-get update
|
||||
$STD apt-get install -y temurin-17-jre
|
||||
msg_ok "Installed Eclipse Temurin JRE"
|
||||
|
||||
msg_info "Installing MongoDB"
|
||||
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
|
||||
if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
|
||||
msg_ok "No AVX Support Detected"
|
||||
msg_info "Installing MongoDB 4.2"
|
||||
if ! dpkg -l | grep -q "libssl1.1"; then
|
||||
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
|
||||
$STD apt-get install -f -y # Fix any broken dependencies
|
||||
fi
|
||||
wget -qO- https://www.mongodb.org/static/pgp/server-4.2.asc | gpg --dearmor > /usr/share/keyrings/mongodb-server-4.2.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-4.2.gpg] https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" >/etc/apt/sources.list.d/mongodb-org-4.2.list
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y mongodb-org=4.2.17
|
||||
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_info "Installing UniFi Network Server"
|
||||
|
@ -26,7 +26,9 @@ cd /opt
|
||||
RELEASE=$(curl -s https://dl.vikunja.io/vikunja/ | grep -oP 'href="/vikunja/\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n 1)
|
||||
wget -q "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb"
|
||||
$STD dpkg -i vikunja-$RELEASE-amd64.deb
|
||||
sudo sed -i 's/^ timezone: .*/ timezone: UTC/' /etc/vikunja/config.yml
|
||||
sed -i 's|^ timezone: .*| timezone: UTC|' /etc/vikunja/config.yml
|
||||
sed -i 's|"./vikunja.db"|"/etc/vikunja/vikunja.db"|' /etc/vikunja/config.yml
|
||||
sed -i 's|./files|/etc/vikunja/files|' /etc/vikunja/config.yml
|
||||
systemctl start vikunja.service
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed Vikunja"
|
||||
|
@ -14,17 +14,19 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y curl
|
||||
$STD apt-get install -y sudo
|
||||
$STD apt-get install -y mc
|
||||
$STD apt-get install -y \
|
||||
curl \
|
||||
sudo \
|
||||
mc
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
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
|
||||
$STD dpkg -i zabbix-release_7.0-1+debian12_all.deb
|
||||
rm zabbix-release_7.0-1+debian12_all.deb
|
||||
cd /tmp
|
||||
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
||||
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
|
||||
$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_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_info "Starting Services"
|
||||
systemctl restart zabbix-server zabbix-agent apache2
|
||||
systemctl enable -q zabbix-server zabbix-agent apache2
|
||||
systemctl restart zabbix-server zabbix-agent2 apache2
|
||||
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
|
||||
msg_ok "Started Services"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -14,33 +14,43 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y curl
|
||||
$STD apt-get install -y sudo
|
||||
$STD apt-get install -y mc
|
||||
$STD apt-get install -y \
|
||||
curl \
|
||||
sudo \
|
||||
mc
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
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
|
||||
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
|
||||
$STD unzip 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
|
||||
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_info "Creating Service"
|
||||
service_path="/etc/systemd/system/zwave-js-ui.service"
|
||||
echo "[Unit]
|
||||
cat <<EOF > /etc/systemd/system/zwave-js-ui.service
|
||||
[Unit]
|
||||
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
|
||||
EnvironmentFile=/opt/.env
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" >$service_path
|
||||
systemctl start zwave-js-ui
|
||||
$STD systemctl enable zwave-js-ui
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now zwave-js-ui
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "5006",
|
||||
"interface_port": 5006,
|
||||
"documentation": null,
|
||||
"website": "https://actualbudget.org/",
|
||||
"logo": "https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-client/public/maskable-512x512.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/actualbudget.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -33,11 +33,15 @@
|
||||
"notes": [
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started",
|
||||
"website": "https://adguard.com/en/adguard-home/overview.html",
|
||||
"logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/adguard/icon.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/adguard.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": null,
|
||||
"website": "https://adventurelog.app/",
|
||||
"logo": "https://raw.githubusercontent.com/seanmorley15/AdventureLog/refs/heads/main/documentation/static/img/favicon.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/adventurelog.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "7",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 7,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": true,
|
||||
"interface_port": "8090",
|
||||
"interface_port": 8090,
|
||||
"documentation": null,
|
||||
"website": "https://www.ispyconnect.com/",
|
||||
"logo": "https://ispycontent.azureedge.net/img/ispy2.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/agentdvr.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/alpine.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "0.1",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 0.1,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/apache-cassandra.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "5984",
|
||||
"interface_port": 5984,
|
||||
"documentation": null,
|
||||
"website": "https://couchdb.apache.org/",
|
||||
"logo": "https://couchdb.apache.org/image/couch@2x.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/apache-couchdb.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "4096",
|
||||
"hdd": "10",
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "3142",
|
||||
"interface_port": 3142,
|
||||
"documentation": null,
|
||||
"website": "https://www.unix-ag.uni-kl.de/~bloch/acng/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/apt-cacher-ng.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/archivebox.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "6880",
|
||||
"interface_port": 6880,
|
||||
"documentation": null,
|
||||
"website": "https://aria2.github.io/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/aria2.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1028",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "13378",
|
||||
"interface_port": 13378,
|
||||
"documentation": null,
|
||||
"website": "https://www.audiobookshelf.org/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/audiobookshelf.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/audiobookshelf.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "7474",
|
||||
"interface_port": 7474,
|
||||
"documentation": null,
|
||||
"website": "https://autobrr.com/",
|
||||
"logo": "https://raw.githubusercontent.com/autobrr/autobrr/master/.github/images/logo.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/autobrr.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "6767",
|
||||
"interface_port": 6767,
|
||||
"documentation": null,
|
||||
"website": "https://www.bazarr.media/",
|
||||
"logo": "https://www.bazarr.media/assets/img/logo.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/bazarr.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "4000",
|
||||
"interface_port": 4000,
|
||||
"documentation": null,
|
||||
"website": "https://0xerr0r.github.io/blocky/",
|
||||
"logo": "https://raw.githubusercontent.com/0xERR0R/blocky/main/docs/blocky.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/blocky.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "80",
|
||||
"interface_port": 80,
|
||||
"documentation": null,
|
||||
"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",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/bookstack.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/bunkerweb.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "80",
|
||||
"interface_port": 80,
|
||||
"documentation": "https://caddyserver.com/docs/",
|
||||
"website": "https://caddyserver.com/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/caddy.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/caddy.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8083",
|
||||
"interface_port": 8083,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/janeczku/calibre-web",
|
||||
"logo": "https://sasquatters.com/media/2017/04/Calibre-web-banner-768x512.jpg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/calibre-web.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "80",
|
||||
"interface_port": 80,
|
||||
"documentation": null,
|
||||
"website": "https://www.casaos.io/",
|
||||
"logo": "https://wiki.casaos.io/_assets/casaos-no-text.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/casaos.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "5000",
|
||||
"interface_port": 5000,
|
||||
"documentation": null,
|
||||
"website": "https://changedetection.io/",
|
||||
"logo": "https://github.com/dgtlmoon/changedetection.io/blob/master/changedetectionio/static/images/avatar-256x256.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/changedetection.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": true,
|
||||
"interface_port": "8089",
|
||||
"interface_port": 8089,
|
||||
"documentation": null,
|
||||
"website": "https://getchannels.com/dvr-server/",
|
||||
"logo": "https://getchannels.com/a/images/channels-logo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/channels.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/cloudflared.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "9090",
|
||||
"interface_port": 9090,
|
||||
"documentation": null,
|
||||
"website": "https://cockpit-project.org/",
|
||||
"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",
|
||||
"script": "ct/cockpit.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "misc",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8680",
|
||||
"interface_port": 8680,
|
||||
"documentation": null,
|
||||
"website": null,
|
||||
"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",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8082",
|
||||
"interface_port": 8082,
|
||||
"documentation": null,
|
||||
"website": "https://www.commafeed.com/",
|
||||
"logo": "https://raw.githubusercontent.com/Athou/commafeed/master/commafeed-client/public/app-icon-144.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/commafeed.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3012",
|
||||
"interface_port": 3012,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/jhuckaby/Cronicle",
|
||||
"logo": "https://github.com/jhuckaby/Cronicle/blob/master/htdocs/images/logo-128.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/cronicle.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8084",
|
||||
"interface_port": 8084,
|
||||
"documentation": null,
|
||||
"website": null,
|
||||
"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",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/daemonsync.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "8",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "4000",
|
||||
"interface_port": 4000,
|
||||
"documentation": null,
|
||||
"website": "https://dashy.to/",
|
||||
"logo": "https://github.com/Lissy93/dashy/raw/master/public/web-icons/dashy-logo.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/dashy.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "6",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "vm/debian-vm.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "2",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 2,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/debian.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": true,
|
||||
"interface_port": "80",
|
||||
"interface_port": 80,
|
||||
"documentation": null,
|
||||
"website": "https://www.phoscon.de/en/conbee2/software#deconz",
|
||||
"logo": "https://phoscon.de/img/phoscon-logo128x.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/deconz.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8112",
|
||||
"interface_port": 8112,
|
||||
"documentation": null,
|
||||
"website": "https://www.deluge-torrent.org/",
|
||||
"logo": "https://dev.deluge-torrent.org/chrome/common/deluge_logo.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/deluge.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/docker.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
@ -29,9 +29,9 @@
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-docker.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "5001",
|
||||
"interface_port": 5001,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/louislam/dockge",
|
||||
"logo": "https://raw.githubusercontent.com/louislam/dockge/master/frontend/public/icon.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/dockge.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "18",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 18,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8096",
|
||||
"interface_port": 8096,
|
||||
"documentation": null,
|
||||
"website": "https://emby.media/",
|
||||
"logo": "https://github.com/home-assistant/brands/blob/master/core_integrations/emby/icon.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/emby.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "18083",
|
||||
"interface_port": 18083,
|
||||
"documentation": null,
|
||||
"website": "https://www.emqx.io/",
|
||||
"logo": "https://github.com/hassio-addons/repository/blob/master/emqx/icon.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/emqx.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8409",
|
||||
"interface_port": 8409,
|
||||
"documentation": null,
|
||||
"website": "https://ersatztv.org/",
|
||||
"logo": "https://raw.githubusercontent.com/ErsatzTV/ErsatzTV/main/artwork/ersatztv-logo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/ersatztv.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "5",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "6052",
|
||||
"interface_port": 6052,
|
||||
"documentation": null,
|
||||
"website": "https://esphome.io/",
|
||||
"logo": "https://esphome.io/_static/favicon.ico",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/esphome.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "7070",
|
||||
"interface_port": 7070,
|
||||
"documentation": "https://evcc.io/#devices",
|
||||
"website": "https://evcc.io/en/",
|
||||
"logo": "https://docs.evcc.io/en/img/logo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/evcc.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "5000",
|
||||
"interface_port": 5000,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/revenz/Fenrus",
|
||||
"logo": "https://raw.githubusercontent.com/revenz/Fenrus/master/wwwroot/fenrus.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/fenrus.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8083",
|
||||
"interface_port": 8083,
|
||||
"documentation": null,
|
||||
"website": "https://fhem.de/",
|
||||
"logo": "https://avatars.githubusercontent.com/u/45183393?s=100&v=4",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/fhem.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "misc",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8080",
|
||||
"interface_port": 8080,
|
||||
"documentation": null,
|
||||
"website": "https://filebrowser.org/features",
|
||||
"logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/filebrowser.png?raw=true",
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8191",
|
||||
"interface_port": 8191,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/FlareSolverr/FlareSolverr",
|
||||
"logo": "https://raw.githubusercontent.com/FlareSolverr/FlareSolverr/master/resources/flaresolverr_logo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/flaresolverr.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": null,
|
||||
"website": "https://flowiseai.com/",
|
||||
"logo": "https://flowiseai.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flogo-color-high.e60de2f8.png&w=256&q=75",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/flowiseai.sh",
|
||||
"resources": {
|
||||
"cpu": "4",
|
||||
"ram": "4096",
|
||||
"hdd": "10",
|
||||
"cpu": 4,
|
||||
"ram": 4096,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": null,
|
||||
"website": "https://forgejo.org/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/forgejo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/forgejo.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "10",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": true,
|
||||
"interface_port": "5000",
|
||||
"interface_port": 5000,
|
||||
"documentation": null,
|
||||
"website": "https://frigate.video/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/frigate.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/frigate.sh",
|
||||
"resources": {
|
||||
"cpu": "4",
|
||||
"ram": "4096",
|
||||
"hdd": "20",
|
||||
"cpu": 4,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "debian",
|
||||
"version": "11"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": null,
|
||||
"website": "https://gitea.com",
|
||||
"logo": "https://gitea.com/gitea/design/raw/branch/main/logo/logo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/gitea.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "8",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "misc",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "61208",
|
||||
"interface_port": 61208,
|
||||
"documentation": null,
|
||||
"website": "https://nicolargo.github.io/glances/",
|
||||
"logo": "https://raw.githubusercontent.com/nicolargo/glances/develop/docs/_static/Glances%20Logo.svg",
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "1984",
|
||||
"interface_port": 1984,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/AlexxIT/go2rtc",
|
||||
"logo": "https://github.com/AlexxIT/go2rtc/blob/master/assets/logo.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/go2rtc.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "53842",
|
||||
"interface_port": 53842,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/Forceu/Gokapi",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/gokapi.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "80",
|
||||
"interface_port": 80,
|
||||
"documentation": null,
|
||||
"website": "https://gotify.net/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/gotify.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/gotify.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": null,
|
||||
"website": "https://grafana.com/",
|
||||
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fdocs.checkmk.com%2Flatest%2Fimages%2Fgrafana_logo.png&f=1&nofb=1",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/grafana.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
@ -29,9 +29,9 @@
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-grafana.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "256",
|
||||
"hdd": "1",
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.19"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "80",
|
||||
"interface_port": 80,
|
||||
"documentation": null,
|
||||
"website": "https://grocy.info/",
|
||||
"logo": "https://grocy.info/img/grocy_logo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/grocy.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "vm",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8123",
|
||||
"interface_port": 8123,
|
||||
"documentation": "https://www.home-assistant.io/docs/",
|
||||
"website": "https://www.home-assistant.io/",
|
||||
"logo": "https://avatars.githubusercontent.com/u/13844975?s=200&v=4",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "vm/haos-vm.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "4096",
|
||||
"hdd": "32",
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 32,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
|
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/headscale.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "7990",
|
||||
"interface_port": 7990,
|
||||
"documentation": null,
|
||||
"website": "https://heimdall.site/",
|
||||
"logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/heimdall.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/heimdall-dashboard.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "1883",
|
||||
"interface_port": 1883,
|
||||
"documentation": null,
|
||||
"website": "https://www.hivemq.com/",
|
||||
"logo": "https://hivemq.com/img/svg/hivemq-bee.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/hivemq.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": null,
|
||||
"website": "https://homarr.dev/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/homarr.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/homarr.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8123",
|
||||
"interface_port": 8123,
|
||||
"documentation": "https://www.home-assistant.io/docs/",
|
||||
"website": "https://www.home-assistant.io/",
|
||||
"logo": "https://avatars.githubusercontent.com/u/13844975?s=200&v=4",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/homeassistant-core.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "24.04"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8123",
|
||||
"interface_port": 8123,
|
||||
"documentation": "https://www.home-assistant.io/docs/",
|
||||
"website": "https://www.home-assistant.io/",
|
||||
"logo": "https://avatars.githubusercontent.com/u/13844975?s=200&v=4",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/homeassistant.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "16",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 16,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "7745",
|
||||
"interface_port": 7745,
|
||||
"documentation": null,
|
||||
"website": "https://homebox.software/en/",
|
||||
"logo": "https://homebox.software/lilbox.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/homebox.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8581",
|
||||
"interface_port": 8581,
|
||||
"documentation": null,
|
||||
"website": "https://homebridge.io/",
|
||||
"logo": "https://raw.githubusercontent.com/homebridge/branding/master/logos/homebridge-color-round-stylized.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/homebridge.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "1024",
|
||||
"hdd": "4",
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "3000",
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://gethomepage.dev/latest/configs/",
|
||||
"website": "https://github.com/benphelps/homepage",
|
||||
"logo": "https://avatars.githubusercontent.com/u/122929872?v=4",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/homepage.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "1024",
|
||||
"hdd": "3",
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 3,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8010",
|
||||
"interface_port": 8010,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/bastienwirtz/homer#---------homer",
|
||||
"logo": "https://raw.githubusercontent.com/bastienwirtz/homer/main/public/assets/icons/logo.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/homer.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": true,
|
||||
"interface_port": "8090",
|
||||
"interface_port": 8090,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/awawa-dev/HyperHDR",
|
||||
"logo": "https://raw.githubusercontent.com/awawa-dev/HyperHDR/master/resources/icons/hyperhdr-icon-256px.png",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/hyperhdr.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "4",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": "8090",
|
||||
"interface_port": 8090,
|
||||
"documentation": null,
|
||||
"website": null,
|
||||
"logo": "https://github.com/hyperion-project/hyperion.ng/raw/master/doc/logo_dark.png?raw=true",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/hyperion.sh",
|
||||
"resources": {
|
||||
"cpu": "1",
|
||||
"ram": "512",
|
||||
"hdd": "2",
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": "8086",
|
||||
"interface_port": 8086,
|
||||
"documentation": null,
|
||||
"website": "https://www.influxdata.com/",
|
||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/influx.svg",
|
||||
@ -18,9 +18,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/influxdb.sh",
|
||||
"resources": {
|
||||
"cpu": "2",
|
||||
"ram": "2048",
|
||||
"hdd": "8",
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user