mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-05 10:52:49 +00:00
Compare commits
38 Commits
2025-05-01
...
2025-05-05
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5766da56d | ||
|
|
0239abb126 | ||
|
|
06960d3023 | ||
|
|
fd813b8936 | ||
|
|
fa9c39f212 | ||
|
|
536c3d113d | ||
|
|
23281bdc0c | ||
|
|
cc5d8e162b | ||
|
|
5c43513295 | ||
|
|
6c648f4b89 | ||
|
|
9f88b1b1fb | ||
|
|
0ea0f56e1b | ||
|
|
bff0ab3d3d | ||
|
|
1f56a8cc6d | ||
|
|
eaebc184b1 | ||
|
|
b9594538ca | ||
|
|
8e56da691a | ||
|
|
c9f739ae3b | ||
|
|
2ba1aaa383 | ||
|
|
4510e7b4d8 | ||
|
|
9f1bf85b42 | ||
|
|
a2a528c294 | ||
|
|
15ec09d71c | ||
|
|
57a18aec76 | ||
|
|
8fa1743dd6 | ||
|
|
78bb1ee195 | ||
|
|
130031e4f9 | ||
|
|
ea9f91036e | ||
|
|
783e7518f8 | ||
|
|
64595b08ce | ||
|
|
43d67cff58 | ||
|
|
4ae2eb2bfa | ||
|
|
6220e272af | ||
|
|
dc36ba409c | ||
|
|
15deb9c658 | ||
|
|
07d87334d5 | ||
|
|
39300b2b6e | ||
|
|
3b2aa30d48 |
68
CHANGELOG.md
68
CHANGELOG.md
@@ -14,6 +14,74 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
||||||
|
|
||||||
|
|
||||||
|
## 2025-05-05
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Alpine-Komodo [@MickLesk](https://github.com/MickLesk) ([#4234](https://github.com/community-scripts/ProxmoxVE/pull/4234))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Docker VM: Fix variable doublequoting [@tremor021](https://github.com/tremor021) ([#4245](https://github.com/community-scripts/ProxmoxVE/pull/4245))
|
||||||
|
- Alpine-Vaultwarden: Fix sed and better cert generation [@tremor021](https://github.com/tremor021) ([#4232](https://github.com/community-scripts/ProxmoxVE/pull/4232))
|
||||||
|
- Apache Guacamole: Fix Version Grepping [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4229](https://github.com/community-scripts/ProxmoxVE/pull/4229))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Docker-VM: Add Disk Size choice [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4241](https://github.com/community-scripts/ProxmoxVE/pull/4241))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Komodo update logic [@MickLesk](https://github.com/MickLesk) ([#4231](https://github.com/community-scripts/ProxmoxVE/pull/4231))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 💾 Core
|
||||||
|
|
||||||
|
- tools.func: better function handling + gs as new helper [@MickLesk](https://github.com/MickLesk) ([#4238](https://github.com/community-scripts/ProxmoxVE/pull/4238))
|
||||||
|
|
||||||
|
## 2025-05-04
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Code Server: Update misleading name, description and icon. [@ArmainAP](https://github.com/ArmainAP) ([#4211](https://github.com/community-scripts/ProxmoxVE/pull/4211))
|
||||||
|
|
||||||
|
## 2025-05-03
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Vaultwarden: Enable HTTPS by default [@tremor021](https://github.com/tremor021) ([#4197](https://github.com/community-scripts/ProxmoxVE/pull/4197))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Vaultwarden: Fix access URL [@tremor021](https://github.com/tremor021) ([#4199](https://github.com/community-scripts/ProxmoxVE/pull/4199))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- SFTPGo: Switch updatable to true on website [@tremor021](https://github.com/tremor021) ([#4186](https://github.com/community-scripts/ProxmoxVE/pull/4186))
|
||||||
|
|
||||||
|
## 2025-05-02
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- NetBox: Fix typo in sed command, preventing install [@tremor021](https://github.com/tremor021) ([#4179](https://github.com/community-scripts/ProxmoxVE/pull/4179))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Changed the random script button to be the same as all the other buttons [@BramSuurdje](https://github.com/BramSuurdje) ([#4183](https://github.com/community-scripts/ProxmoxVE/pull/4183))
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Habitica: correct config path [@DrDonoso](https://github.com/DrDonoso) ([#4181](https://github.com/community-scripts/ProxmoxVE/pull/4181))
|
||||||
|
|
||||||
## 2025-05-01
|
## 2025-05-01
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
58
ct/alpine-komodo.sh
Normal file
58
ct/alpine-komodo.sh
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://komo.do
|
||||||
|
|
||||||
|
APP="Alpine-Komodo"
|
||||||
|
var_tags="${var_tags:-docker,alpine}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-10}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.21}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
[[ -d /opt/komodo ]] || {
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
||||||
|
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||||
|
msg_error "No valid compose file found in /opt/komodo!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||||
|
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||||
|
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||||
|
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
|
||||||
|
if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
|
||||||
|
msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
|
||||||
|
mv "$BACKUP_FILE" "$COMPOSE_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9120${CL}"
|
||||||
6
ct/headers/alpine-komodo
Normal file
6
ct/headers/alpine-komodo
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
___ __ _ __ __ __
|
||||||
|
/ | / /___ (_)___ ___ / //_/___ ____ ___ ____ ____/ /___
|
||||||
|
/ /| | / / __ \/ / __ \/ _ \______/ ,< / __ \/ __ `__ \/ __ \/ __ / __ \
|
||||||
|
/ ___ |/ / /_/ / / / / / __/_____/ /| / /_/ / / / / / / /_/ / /_/ / /_/ /
|
||||||
|
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_\____/_/ /_/ /_/\____/\__,_/\____/
|
||||||
|
/_/
|
||||||
62
ct/komodo.sh
62
ct/komodo.sh
@@ -20,42 +20,36 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/komodo ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
COMPOSE_FILE=""
|
|
||||||
for file in /opt/komodo/*.compose.yaml; do
|
|
||||||
if [[ "$file" != "compose.env" ]]; then
|
|
||||||
COMPOSE_FILE="${file#/opt/komodo/}"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ -z "$COMPOSE_FILE" ]]; then
|
[[ -d /opt/komodo ]] || {
|
||||||
msg_error "No valid compose file found in /opt/komodo!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
}
|
||||||
|
|
||||||
BACKUP_FILE="${COMPOSE_FILE}.bak_$(date +%Y%m%d_%H%M%S)"
|
msg_info "Updating ${APP}"
|
||||||
mv "/opt/komodo/$COMPOSE_FILE" "/opt/komodo/$BACKUP_FILE" || {
|
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
||||||
msg_error "Failed to create backup of $COMPOSE_FILE!"
|
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||||
exit 1
|
msg_error "No valid compose file found in /opt/komodo!"
|
||||||
}
|
exit 1
|
||||||
|
fi
|
||||||
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_FILE}"
|
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||||
if ! curl -fsSL "$GITHUB_URL" -o "/opt/komodo/${COMPOSE_FILE}"; then
|
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||||
msg_error "Failed to download ${COMPOSE_FILE} from GitHub!"
|
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||||
mv "/opt/komodo/${BACKUP_FILE}" "/opt/komodo/${COMPOSE_FILE}"
|
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
}
|
||||||
|
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
|
||||||
$STD docker compose -p komodo -f "/opt/komodo/$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
|
||||||
msg_ok "Updated ${APP}"
|
msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
|
||||||
|
mv "$BACKUP_FILE" "$COMPOSE_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
NODE_VERSION="22"
|
||||||
|
NODE_MODULE="yarn@latest"
|
||||||
|
install_node_and_modules
|
||||||
|
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop linkwarden
|
systemctl stop linkwarden
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
@@ -46,7 +50,7 @@ function update_script() {
|
|||||||
mv /opt/linkwarden/.env /opt/.env
|
mv /opt/linkwarden/.env /opt/.env
|
||||||
rm -rf /opt/linkwarden
|
rm -rf /opt/linkwarden
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip")
|
curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
|
||||||
unzip -q ${RELEASE}.zip
|
unzip -q ${RELEASE}.zip
|
||||||
mv linkwarden-${RELEASE:1} /opt/linkwarden
|
mv linkwarden-${RELEASE:1} /opt/linkwarden
|
||||||
cd /opt/linkwarden
|
cd /opt/linkwarden
|
||||||
@@ -54,8 +58,9 @@ function update_script() {
|
|||||||
$STD npx playwright install-deps
|
$STD npx playwright install-deps
|
||||||
$STD yarn playwright install
|
$STD yarn playwright install
|
||||||
cp /opt/.env /opt/linkwarden/.env
|
cp /opt/.env /opt/linkwarden/.env
|
||||||
$STD yarn build
|
$STD yarn prisma:generate
|
||||||
$STD yarn prisma migrate deploy
|
$STD yarn web:build
|
||||||
|
$STD yarn prisma:deploy
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
setup_uv
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/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
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@@ -76,12 +76,12 @@ function update_script() {
|
|||||||
msg_ok "Stopped Vaultwarden"
|
msg_ok "Stopped Vaultwarden"
|
||||||
|
|
||||||
msg_info "Updating Web-Vault to $WVRELEASE"
|
msg_info "Updating Web-Vault to $WVRELEASE"
|
||||||
$STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/$WVRELEASE/bw_web_$WVRELEASE.tar.gz
|
$STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/"$WVRELEASE"/bw_web_"$WVRELEASE".tar.gz
|
||||||
$STD tar -zxf bw_web_$WVRELEASE.tar.gz -C /opt/vaultwarden/
|
$STD tar -zxf bw_web_"$WVRELEASE".tar.gz -C /opt/vaultwarden/
|
||||||
msg_ok "Updated Web-Vault"
|
msg_ok "Updated Web-Vault"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm bw_web_$WVRELEASE.tar.gz
|
rm bw_web_"$WVRELEASE".tar.gz
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
msg_info "Starting Vaultwarden"
|
msg_info "Starting Vaultwarden"
|
||||||
@@ -94,7 +94,7 @@ function update_script() {
|
|||||||
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Set the ADMIN_TOKEN" 10 58 3>&1 1>&2 2>&3); then
|
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Set the ADMIN_TOKEN" 10 58 3>&1 1>&2 2>&3); then
|
||||||
if [[ -z "$NEWTOKEN" ]]; then exit; fi
|
if [[ -z "$NEWTOKEN" ]]; then exit; fi
|
||||||
if ! command -v argon2 >/dev/null 2>&1; then $STD apt-get install -y argon2; fi
|
if ! command -v argon2 >/dev/null 2>&1; then $STD apt-get install -y argon2; fi
|
||||||
TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
|
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
|
||||||
sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
|
sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
|
||||||
if [[ -f /opt/vaultwarden/data/config.json ]]; then
|
if [[ -f /opt/vaultwarden/data/config.json ]]; then
|
||||||
sed -i "s|\"admin_token\":.*|\"admin_token\": \"${TOKEN}\"|" /opt/vaultwarden/data/config.json
|
sed -i "s|\"admin_token\":.*|\"admin_token\": \"${TOKEN}\"|" /opt/vaultwarden/data/config.json
|
||||||
@@ -112,4 +112,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8000${CL}"
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "VS Code Server",
|
|
||||||
"slug": "code-server",
|
|
||||||
"categories": [1, 20, 11],
|
|
||||||
"date_created": "2024-05-02",
|
|
||||||
"type": "addon",
|
|
||||||
"updateable": false,
|
|
||||||
"privileged": false,
|
|
||||||
"interface_port": 8680,
|
|
||||||
"documentation": null,
|
|
||||||
"website": null,
|
|
||||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/visual-studio-code.svg",
|
|
||||||
"config_path": "",
|
|
||||||
"description": "VS Code Server is a service you can run on a remote development machine, like your desktop PC or a virtual machine (VM). It allows you to securely connect to that remote machine from anywhere through a vscode.dev URL, without the requirement of SSH.",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "tools/addon/code-server.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": null,
|
|
||||||
"ram": null,
|
|
||||||
"hdd": null,
|
|
||||||
"os": null,
|
|
||||||
"version": null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": null,
|
|
||||||
"password": null
|
|
||||||
},
|
|
||||||
"notes": [
|
|
||||||
{
|
|
||||||
"text": "Execute within an existing LXC Console",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
42
frontend/public/json/coder-code-server.json
Normal file
42
frontend/public/json/coder-code-server.json
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"name": "Coder Code Server",
|
||||||
|
"slug": "coder-code-server",
|
||||||
|
"categories": [
|
||||||
|
1,
|
||||||
|
20,
|
||||||
|
11
|
||||||
|
],
|
||||||
|
"date_created": "2024-05-02",
|
||||||
|
"type": "addon",
|
||||||
|
"updateable": false,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8680,
|
||||||
|
"documentation": "https://coder.com/docs/code-server",
|
||||||
|
"website": "https://coder.com/",
|
||||||
|
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/coder.svg",
|
||||||
|
"config_path": "",
|
||||||
|
"description": "Coder Code Server is an open-source project that enables you to run Visual Studio Code (VS Code) on a remote machine, such as a desktop PC or virtual server. It serves a web-based version of VS Code that you can access from any browser via a URL, allowing remote development without needing an SSH connection. Unlike the official VS Code Server used by vscode.dev for Remote Tunnels, code-server is developed by Coder and operates independently, providing similar capabilities through a self-hosted solution.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "tools/addon/coder-code-server.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": null,
|
||||||
|
"ram": null,
|
||||||
|
"hdd": null,
|
||||||
|
"os": null,
|
||||||
|
"version": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Execute within an existing LXC Console",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"documentation": "https://github.com/HabitRPG/habitica/wiki",
|
"documentation": "https://github.com/HabitRPG/habitica/wiki",
|
||||||
"website": "https://habitica.com/",
|
"website": "https://habitica.com/",
|
||||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/habitica.svg",
|
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/habitica.svg",
|
||||||
"config_path": "/etc/headscale/config.yaml",
|
"config_path": "/opt/habitica/config.json",
|
||||||
"description": "Habitica is an open-source habit-building program that treats your life like a role-playing game. Level up as you succeed, lose HP as you fail, and earn Gold to buy weapons and armor!",
|
"description": "Habitica is an open-source habit-building program that treats your life like a role-playing game. Level up as you succeed, lose HP as you fail, and earn Gold to buy weapons and armor!",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -35,11 +35,6 @@
|
|||||||
{
|
{
|
||||||
"text": "It takes a minute or two after installation for web UI to start, please be patient.",
|
"text": "It takes a minute or two after installation for web UI to start, please be patient.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "Config file is at `/opt/habitica/config.json`",
|
|
||||||
"type": "info"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,17 @@
|
|||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alpine",
|
||||||
|
"script": "ct/alpine-komodo.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 1024,
|
||||||
|
"hdd": 10,
|
||||||
|
"os": "alpine",
|
||||||
|
"version": "3.21"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": "https://docs.sftpgo.com/latest/",
|
"documentation": "https://docs.sftpgo.com/latest/",
|
||||||
|
|||||||
@@ -1,56 +1,55 @@
|
|||||||
{
|
{
|
||||||
"name": "Vaultwarden",
|
"name": "Vaultwarden",
|
||||||
"slug": "vaultwarden",
|
"slug": "vaultwarden",
|
||||||
"categories": [
|
"categories": [
|
||||||
6
|
6
|
||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8000,
|
"interface_port": 8000,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/dani-garcia/vaultwarden/wiki",
|
||||||
"website": "https://github.com/dani-garcia/vaultwarden/",
|
"website": "https://github.com/dani-garcia/vaultwarden/",
|
||||||
"logo": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/resources/vaultwarden-icon-white.svg",
|
"logo": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/resources/vaultwarden-icon-white.svg",
|
||||||
"config_path": "/opt/vaultwarden/.env",
|
"config_path": "/opt/vaultwarden/.env",
|
||||||
"description": "Vaultwarden is a self-hosted password manager which provides secure and encrypted password storage. It uses client-side encryption and provides access to passwords through a web interface and mobile apps.",
|
"description": "Vaultwarden is a self-hosted password manager which provides secure and encrypted password storage. It uses client-side encryption and provides access to passwords through a web interface and mobile apps.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/vaultwarden.sh",
|
"script": "ct/vaultwarden.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 4,
|
"cpu": 4,
|
||||||
"ram": 6144,
|
"ram": 6144,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "alpine",
|
|
||||||
"script": "ct/alpine-vaultwarden.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": 1,
|
|
||||||
"ram": 256,
|
|
||||||
"hdd": 0.5,
|
|
||||||
"os": "alpine",
|
|
||||||
"version": "3.21"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": null,
|
|
||||||
"password": null
|
|
||||||
},
|
},
|
||||||
"notes": [
|
{
|
||||||
{
|
"type": "alpine",
|
||||||
"text": "Vaultwarden needs to be behind a proxy (Nginx Proxy Manager, Caddy, etc) to obtain HTTPS and to allow clients to connect. If you try to open the web page directly on the new container, the web site will not load",
|
"script": "ct/alpine-vaultwarden.sh",
|
||||||
"type": "warning"
|
"resources": {
|
||||||
},
|
"cpu": 1,
|
||||||
{
|
"ram": 256,
|
||||||
"text": "To set the Admin Token, run the command below (or type update) in the LXC Console.",
|
"hdd": 0.5,
|
||||||
"type": "info"
|
"os": "alpine",
|
||||||
}
|
"version": "3.21"
|
||||||
]
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Application uses self-signed certificate for HTTPS to work and is enabled by default. If you need a different setup, please read the documentation.",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "To set the Admin Token, run the command below (or type update) in the LXC Console.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,43 +1,103 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "stackblitz-labs/bolt.diy",
|
"name": "keycloak/keycloak",
|
||||||
"version": "1.0.0-draft",
|
"version": "26.2.3",
|
||||||
"date": "2025-05-01T11:34:18Z"
|
"date": "2025-05-05T11:12:36Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "n8n-io/n8n",
|
"name": "grokability/snipe-it",
|
||||||
"version": "n8n@1.91.0",
|
"version": "v8.1.2",
|
||||||
"date": "2025-04-28T15:38:56Z"
|
"date": "2025-05-05T10:28:17Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "theonedev/onedev",
|
||||||
|
"version": "v11.9.3",
|
||||||
|
"date": "2025-05-05T10:22:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "traefik/traefik",
|
||||||
|
"version": "v3.3.7",
|
||||||
|
"date": "2025-05-05T08:53:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "icereed/paperless-gpt",
|
||||||
|
"version": "v0.17.0",
|
||||||
|
"date": "2025-05-05T08:27:55Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "evcc-io/evcc",
|
||||||
|
"version": "0.203.5",
|
||||||
|
"date": "2025-05-05T06:41:02Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mattermost/mattermost",
|
||||||
|
"version": "v10.6.3",
|
||||||
|
"date": "2025-04-29T07:03:19Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Jackett/Jackett",
|
"name": "Jackett/Jackett",
|
||||||
"version": "v0.22.1837",
|
"version": "v0.22.1865",
|
||||||
"date": "2025-05-01T06:01:00Z"
|
"date": "2025-05-05T05:54:54Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "NodeBB/NodeBB",
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
"version": "v4.3.0",
|
"version": "4.8.11.0",
|
||||||
"date": "2025-05-01T04:13:41Z"
|
"date": "2025-03-10T06:39:11Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "keycloak/keycloak",
|
"name": "firefly-iii/firefly-iii",
|
||||||
"version": "26.2.2",
|
"version": "v6.2.12",
|
||||||
"date": "2025-04-30T06:14:22Z"
|
"date": "2025-04-20T19:22:17Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "syncthing/syncthing",
|
"name": "moghtech/komodo",
|
||||||
"version": "v2.0.0-beta.9",
|
"version": "v1.17.5",
|
||||||
"date": "2025-04-12T13:58:29Z"
|
"date": "2025-05-04T22:17:06Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ollama/ollama",
|
"name": "YunoHost/yunohost",
|
||||||
"version": "v0.6.7-rc1",
|
"version": "debian/12.0.16",
|
||||||
"date": "2025-04-29T18:57:54Z"
|
"date": "2025-05-04T22:06:15Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "HabitRPG/habitica",
|
"name": "juanfont/headscale",
|
||||||
"version": "v5.36.1",
|
"version": "v0.25.1",
|
||||||
"date": "2025-04-30T19:44:44Z"
|
"date": "2025-02-25T17:30:48Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "semaphoreui/semaphore",
|
||||||
|
"version": "v2.14.8",
|
||||||
|
"date": "2025-05-04T19:28:20Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtipi/runtipi",
|
||||||
|
"version": "nightly",
|
||||||
|
"date": "2025-05-04T18:23:57Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bluenviron/mediamtx",
|
||||||
|
"version": "v1.12.1",
|
||||||
|
"date": "2025-05-04T18:23:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Lidarr/Lidarr",
|
||||||
|
"version": "v2.11.2.4629",
|
||||||
|
"date": "2025-04-28T11:59:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Readarr/Readarr",
|
||||||
|
"version": "v2.0.0.4645",
|
||||||
|
"date": "2017-03-07T18:56:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Prowlarr/Prowlarr",
|
||||||
|
"version": "v1.35.1.5034",
|
||||||
|
"date": "2025-04-30T11:02:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Radarr/Radarr",
|
||||||
|
"version": "v5.22.4.9896",
|
||||||
|
"date": "2025-04-23T18:51:12Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "home-assistant/core",
|
"name": "home-assistant/core",
|
||||||
@@ -45,25 +105,195 @@
|
|||||||
"date": "2025-04-25T07:47:57Z"
|
"date": "2025-04-25T07:47:57Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "runtipi/runtipi",
|
"name": "bastienwirtz/homer",
|
||||||
"version": "v4.0.0",
|
"version": "v25.05.1",
|
||||||
"date": "2025-04-30T18:37:46Z"
|
"date": "2025-05-04T12:17:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "morpheus65535/bazarr",
|
||||||
|
"version": "v1.5.1",
|
||||||
|
"date": "2025-01-01T16:15:52Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ollama/ollama",
|
||||||
|
"version": "v0.6.7-rc2",
|
||||||
|
"date": "2025-04-30T20:57:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pocket-id/pocket-id",
|
||||||
|
"version": "v0.51.1",
|
||||||
|
"date": "2025-05-03T21:42:51Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "FreshRSS/FreshRSS",
|
||||||
|
"version": "1.26.2",
|
||||||
|
"date": "2025-05-03T20:23:27Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "actualbudget/actual",
|
||||||
|
"version": "v25.5.0",
|
||||||
|
"date": "2025-05-03T19:03:17Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "owncast/owncast",
|
||||||
|
"version": "v0.2.2",
|
||||||
|
"date": "2025-05-03T18:45:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rogerfar/rdt-client",
|
||||||
|
"version": "v2.0.111",
|
||||||
|
"date": "2025-05-03T16:25:30Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "linkwarden/linkwarden",
|
||||||
|
"version": "v2.10.1",
|
||||||
|
"date": "2025-05-03T16:03:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dgtlmoon/changedetection.io",
|
||||||
|
"version": "0.49.16",
|
||||||
|
"date": "2025-05-03T14:44:01Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ellite/Wallos",
|
||||||
|
"version": "v3.0.2",
|
||||||
|
"date": "2025-05-03T13:38:57Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blakeblackshear/frigate",
|
||||||
|
"version": "v0.14.1",
|
||||||
|
"date": "2024-08-29T22:32:51Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kimai/kimai",
|
||||||
|
"version": "2.33.0",
|
||||||
|
"date": "2025-05-03T10:33:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Brandawg93/PeaNUT",
|
||||||
|
"version": "v5.7.4",
|
||||||
|
"date": "2025-05-02T23:41:08Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "documenso/documenso",
|
||||||
|
"version": "v1.10.3",
|
||||||
|
"date": "2025-05-02T23:23:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "homarr-labs/homarr",
|
||||||
|
"version": "v1.19.0",
|
||||||
|
"date": "2025-05-02T19:15:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "coder/code-server",
|
||||||
|
"version": "v4.99.4",
|
||||||
|
"date": "2025-05-02T18:33:09Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "prometheus/prometheus",
|
||||||
|
"version": "v0.304.0-rc.0",
|
||||||
|
"date": "2025-05-02T17:29:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "influxdata/influxdb",
|
||||||
|
"version": "v3.0.2",
|
||||||
|
"date": "2025-05-02T18:11:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "forgejo/forgejo",
|
||||||
|
"version": "v11.0.1",
|
||||||
|
"date": "2025-05-02T17:10:30Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jhuckaby/Cronicle",
|
||||||
|
"version": "v0.9.80",
|
||||||
|
"date": "2025-05-02T16:48:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "prometheus-pve/prometheus-pve-exporter",
|
||||||
|
"version": "v3.5.4",
|
||||||
|
"date": "2025-05-02T13:42:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zitadel/zitadel",
|
||||||
|
"version": "v2.71.9",
|
||||||
|
"date": "2025-05-02T12:48:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nzbgetcom/nzbget",
|
||||||
|
"version": "v24.8",
|
||||||
|
"date": "2025-03-18T07:33:51Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "motioneye-project/motioneye",
|
||||||
|
"version": "0.42.1",
|
||||||
|
"date": "2020-06-07T07:27:04Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "msgbyte/tianji",
|
||||||
|
"version": "v1.20.8",
|
||||||
|
"date": "2025-05-02T11:37:05Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "redis/redis",
|
||||||
|
"version": "8.0.0",
|
||||||
|
"date": "2025-05-02T11:20:31Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "emqx/emqx",
|
||||||
|
"version": "e5.9.0",
|
||||||
|
"date": "2025-05-02T11:07:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "apache/couchdb",
|
||||||
|
"version": "3.5.0-RC1",
|
||||||
|
"date": "2025-05-02T04:34:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "syncthing/syncthing",
|
||||||
|
"version": "v2.0.0-rc.14",
|
||||||
|
"date": "2025-05-01T23:50:42Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stackblitz-labs/bolt.diy",
|
||||||
|
"version": "v0.0.7-hf1",
|
||||||
|
"date": "2025-03-10T20:49:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Koenkk/zigbee2mqtt",
|
||||||
|
"version": "2.3.0",
|
||||||
|
"date": "2025-05-01T18:24:31Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "netbox-community/netbox",
|
"name": "netbox-community/netbox",
|
||||||
"version": "v4.2.9",
|
"version": "v4.3.0",
|
||||||
"date": "2025-04-30T18:32:46Z"
|
"date": "2025-05-01T16:46:17Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fallenbagel/jellyseerr",
|
||||||
|
"version": "preview-plex-home-profile",
|
||||||
|
"date": "2025-05-01T14:59:46Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@1.91.0",
|
||||||
|
"date": "2025-04-28T15:38:56Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NodeBB/NodeBB",
|
||||||
|
"version": "v4.3.0",
|
||||||
|
"date": "2025-05-01T04:13:41Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "HabitRPG/habitica",
|
||||||
|
"version": "v5.36.1",
|
||||||
|
"date": "2025-04-30T19:44:44Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "readeck/readeck",
|
"name": "readeck/readeck",
|
||||||
"version": "0.18.1",
|
"version": "0.18.1",
|
||||||
"date": "2025-04-30T17:44:46Z"
|
"date": "2025-04-30T17:44:46Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "ellite/Wallos",
|
|
||||||
"version": "v3.0.1",
|
|
||||||
"date": "2025-04-30T17:16:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "WordPress/WordPress",
|
"name": "WordPress/WordPress",
|
||||||
"version": "6.8.1",
|
"version": "6.8.1",
|
||||||
@@ -79,11 +309,6 @@
|
|||||||
"version": "v1.129.0rc1",
|
"version": "v1.129.0rc1",
|
||||||
"date": "2025-04-16T15:18:13Z"
|
"date": "2025-04-16T15:18:13Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "nzbgetcom/nzbget",
|
|
||||||
"version": "v24.8",
|
|
||||||
"date": "2025-03-18T07:33:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Graylog2/graylog2-server",
|
"name": "Graylog2/graylog2-server",
|
||||||
"version": "6.3.0-alpha.2",
|
"version": "6.3.0-alpha.2",
|
||||||
@@ -94,11 +319,6 @@
|
|||||||
"version": "jenkins-2.504.1",
|
"version": "jenkins-2.504.1",
|
||||||
"date": "2025-04-30T14:33:59Z"
|
"date": "2025-04-30T14:33:59Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "zitadel/zitadel",
|
|
||||||
"version": "v2.71.8",
|
|
||||||
"date": "2025-04-25T11:50:04Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "cloudflare/cloudflared",
|
"name": "cloudflare/cloudflared",
|
||||||
"version": "2025.4.2",
|
"version": "2025.4.2",
|
||||||
@@ -114,11 +334,6 @@
|
|||||||
"version": "version/2025.4.0",
|
"version": "version/2025.4.0",
|
||||||
"date": "2025-04-30T12:34:14Z"
|
"date": "2025-04-30T12:34:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Prowlarr/Prowlarr",
|
|
||||||
"version": "v1.35.1.5034",
|
|
||||||
"date": "2025-04-30T11:02:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Checkmk/checkmk",
|
"name": "Checkmk/checkmk",
|
||||||
"version": "v2.4.0-rc1",
|
"version": "v2.4.0-rc1",
|
||||||
@@ -126,13 +341,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "wazuh/wazuh",
|
"name": "wazuh/wazuh",
|
||||||
"version": "coverity-w17-4.12.0",
|
"version": "coverity-w18-4.12.0",
|
||||||
"date": "2025-04-16T11:20:57Z"
|
"date": "2025-04-30T09:30:26Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "mattermost/mattermost",
|
|
||||||
"version": "v10.6.3",
|
|
||||||
"date": "2025-04-29T07:03:19Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Stirling-Tools/Stirling-PDF",
|
"name": "Stirling-Tools/Stirling-PDF",
|
||||||
@@ -144,11 +354,6 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"date": "2025-04-30T06:24:07Z"
|
"date": "2025-04-30T06:24:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "morpheus65535/bazarr",
|
|
||||||
"version": "v1.5.1",
|
|
||||||
"date": "2025-01-01T16:15:52Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "go-gitea/gitea",
|
"name": "go-gitea/gitea",
|
||||||
"version": "v1.25.0-dev",
|
"version": "v1.25.0-dev",
|
||||||
@@ -159,31 +364,11 @@
|
|||||||
"version": "2025.3",
|
"version": "2025.3",
|
||||||
"date": "2025-04-30T02:52:28Z"
|
"date": "2025-04-30T02:52:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "grokability/snipe-it",
|
|
||||||
"version": "v8.1.1",
|
|
||||||
"date": "2025-04-29T22:22:31Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gristlabs/grist-core",
|
"name": "gristlabs/grist-core",
|
||||||
"version": "v1.5.2",
|
"version": "v1.5.2",
|
||||||
"date": "2025-04-29T20:42:32Z"
|
"date": "2025-04-29T20:42:32Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "emqx/emqx",
|
|
||||||
"version": "e5.9.0-rc.1",
|
|
||||||
"date": "2025-04-29T20:30:20Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MediaBrowser/Emby.Releases",
|
|
||||||
"version": "4.8.11.0",
|
|
||||||
"date": "2025-03-10T06:39:11Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "semaphoreui/semaphore",
|
|
||||||
"version": "v2.14.6",
|
|
||||||
"date": "2025-04-29T15:18:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "hargata/lubelog",
|
"name": "hargata/lubelog",
|
||||||
"version": "v1.4.7",
|
"version": "v1.4.7",
|
||||||
@@ -229,26 +414,11 @@
|
|||||||
"version": "v0.27.2",
|
"version": "v0.27.2",
|
||||||
"date": "2025-04-28T12:03:30Z"
|
"date": "2025-04-28T12:03:30Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Lidarr/Lidarr",
|
|
||||||
"version": "v2.11.2.4629",
|
|
||||||
"date": "2025-04-28T11:59:37Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
"name": "VictoriaMetrics/VictoriaMetrics",
|
||||||
"version": "pmm-6401-v1.116.0",
|
"version": "pmm-6401-v1.116.0",
|
||||||
"date": "2025-04-28T11:30:10Z"
|
"date": "2025-04-28T11:30:10Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "redis/redis",
|
|
||||||
"version": "8.0-rc2-int",
|
|
||||||
"date": "2025-04-28T09:56:36Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pocket-id/pocket-id",
|
|
||||||
"version": "v0.51.0",
|
|
||||||
"date": "2025-04-28T09:15:56Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "FlowiseAI/Flowise",
|
"name": "FlowiseAI/Flowise",
|
||||||
"version": "flowise@2.2.8",
|
"version": "flowise@2.2.8",
|
||||||
@@ -259,31 +429,11 @@
|
|||||||
"version": "v0.24.1",
|
"version": "v0.24.1",
|
||||||
"date": "2025-04-28T08:21:37Z"
|
"date": "2025-04-28T08:21:37Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "firefly-iii/firefly-iii",
|
|
||||||
"version": "v6.2.12",
|
|
||||||
"date": "2025-04-20T19:22:17Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "moghtech/komodo",
|
|
||||||
"version": "v1.17.4",
|
|
||||||
"date": "2025-04-27T23:19:33Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "advplyr/audiobookshelf",
|
"name": "advplyr/audiobookshelf",
|
||||||
"version": "v2.21.0",
|
"version": "v2.21.0",
|
||||||
"date": "2025-04-27T16:31:14Z"
|
"date": "2025-04-27T16:31:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "homarr-labs/homarr",
|
|
||||||
"version": "v1.18.1",
|
|
||||||
"date": "2025-04-27T15:17:35Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "evcc-io/evcc",
|
|
||||||
"version": "0.203.4",
|
|
||||||
"date": "2025-04-27T14:32:09Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gotify/server",
|
"name": "gotify/server",
|
||||||
"version": "v2.6.3",
|
"version": "v2.6.3",
|
||||||
@@ -294,11 +444,6 @@
|
|||||||
"version": "release-5.1.0",
|
"version": "release-5.1.0",
|
||||||
"date": "2025-04-27T08:53:48Z"
|
"date": "2025-04-27T08:53:48Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Radarr/Radarr",
|
|
||||||
"version": "v5.22.4.9896",
|
|
||||||
"date": "2025-04-23T18:51:12Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "tobychui/zoraxy",
|
"name": "tobychui/zoraxy",
|
||||||
"version": "v3.1.9",
|
"version": "v3.1.9",
|
||||||
@@ -339,11 +484,6 @@
|
|||||||
"version": "v2.1.0.117-2.1.0.117_canary_2025-04-25",
|
"version": "v2.1.0.117-2.1.0.117_canary_2025-04-25",
|
||||||
"date": "2025-04-25T17:22:12Z"
|
"date": "2025-04-25T17:22:12Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "icereed/paperless-gpt",
|
|
||||||
"version": "v0.16.0",
|
|
||||||
"date": "2025-04-25T12:44:34Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "donaldzou/WGDashboard",
|
"name": "donaldzou/WGDashboard",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.2",
|
||||||
@@ -354,21 +494,11 @@
|
|||||||
"version": "r7.0.19",
|
"version": "r7.0.19",
|
||||||
"date": "2025-04-24T20:59:43Z"
|
"date": "2025-04-24T20:59:43Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rogerfar/rdt-client",
|
|
||||||
"version": "v2.0.110",
|
|
||||||
"date": "2025-04-24T19:11:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "dotnetfactory/fluid-calendar",
|
"name": "dotnetfactory/fluid-calendar",
|
||||||
"version": "v1.4.0",
|
"version": "v1.4.0",
|
||||||
"date": "2025-04-24T16:20:17Z"
|
"date": "2025-04-24T16:20:17Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jhuckaby/Cronicle",
|
|
||||||
"version": "v0.9.79",
|
|
||||||
"date": "2025-04-24T15:53:43Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "openobserve/openobserve",
|
"name": "openobserve/openobserve",
|
||||||
"version": "v0.14.6-rc8",
|
"version": "v0.14.6-rc8",
|
||||||
@@ -454,36 +584,16 @@
|
|||||||
"version": "v4.3.0",
|
"version": "v4.3.0",
|
||||||
"date": "2025-04-21T17:44:40Z"
|
"date": "2025-04-21T17:44:40Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "YunoHost/yunohost",
|
|
||||||
"version": "debian/12.0.14",
|
|
||||||
"date": "2025-04-09T10:09:00Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Kareadita/Kavita",
|
"name": "Kareadita/Kavita",
|
||||||
"version": "v0.8.6.2",
|
"version": "v0.8.6.2",
|
||||||
"date": "2025-04-20T16:55:38Z"
|
"date": "2025-04-20T16:55:38Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Readarr/Readarr",
|
|
||||||
"version": "v2.0.0.4645",
|
|
||||||
"date": "2017-03-07T18:56:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "paperless-ngx/paperless-ngx",
|
"name": "paperless-ngx/paperless-ngx",
|
||||||
"version": "v2.15.3",
|
"version": "v2.15.3",
|
||||||
"date": "2025-04-19T23:02:17Z"
|
"date": "2025-04-19T23:02:17Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "msgbyte/tianji",
|
|
||||||
"version": "v1.20.7",
|
|
||||||
"date": "2025-04-19T20:35:09Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "theonedev/onedev",
|
|
||||||
"version": "v11.8.7",
|
|
||||||
"date": "2025-04-19T11:19:29Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "caddyserver/caddy",
|
"name": "caddyserver/caddy",
|
||||||
"version": "v2.10.0",
|
"version": "v2.10.0",
|
||||||
@@ -494,21 +604,6 @@
|
|||||||
"version": "v1.0.4",
|
"version": "v1.0.4",
|
||||||
"date": "2025-04-18T16:08:02Z"
|
"date": "2025-04-18T16:08:02Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "prometheus/prometheus",
|
|
||||||
"version": "v3.3.0",
|
|
||||||
"date": "2025-04-18T13:46:38Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "dgtlmoon/changedetection.io",
|
|
||||||
"version": "0.49.15",
|
|
||||||
"date": "2025-04-18T12:58:26Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "traefik/traefik",
|
|
||||||
"version": "v3.3.6",
|
|
||||||
"date": "2025-04-18T09:28:22Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "tailscale/tailscale",
|
"name": "tailscale/tailscale",
|
||||||
"version": "v1.82.5",
|
"version": "v1.82.5",
|
||||||
@@ -519,11 +614,6 @@
|
|||||||
"version": "v0.93.0",
|
"version": "v0.93.0",
|
||||||
"date": "2025-04-17T20:05:25Z"
|
"date": "2025-04-17T20:05:25Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "coder/code-server",
|
|
||||||
"version": "v4.99.3",
|
|
||||||
"date": "2025-04-17T18:33:11Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "benzino77/tasmocompiler",
|
"name": "benzino77/tasmocompiler",
|
||||||
"version": "v12.6.1",
|
"version": "v12.6.1",
|
||||||
@@ -534,66 +624,31 @@
|
|||||||
"version": "v2.35.1",
|
"version": "v2.35.1",
|
||||||
"date": "2025-04-17T14:29:11Z"
|
"date": "2025-04-17T14:29:11Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "influxdata/influxdb",
|
|
||||||
"version": "v3.0.1",
|
|
||||||
"date": "2025-04-17T14:06:09Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "documenso/documenso",
|
|
||||||
"version": "v1.10.0-rc.5",
|
|
||||||
"date": "2025-04-17T13:01:43Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "neo4j/neo4j",
|
"name": "neo4j/neo4j",
|
||||||
"version": "2025.04.0",
|
"version": "2025.04.0",
|
||||||
"date": "2025-04-17T11:13:20Z"
|
"date": "2025-04-17T11:13:20Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "prometheus-pve/prometheus-pve-exporter",
|
|
||||||
"version": "v3.5.3",
|
|
||||||
"date": "2025-04-17T10:40:47Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "IceWhaleTech/CasaOS",
|
"name": "IceWhaleTech/CasaOS",
|
||||||
"version": "v0.4.15",
|
"version": "v0.4.15",
|
||||||
"date": "2024-12-19T03:19:49Z"
|
"date": "2024-12-19T03:19:49Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "forgejo/forgejo",
|
|
||||||
"version": "v11.0.0",
|
|
||||||
"date": "2025-04-16T19:25:53Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "rabbitmq/rabbitmq-server",
|
"name": "rabbitmq/rabbitmq-server",
|
||||||
"version": "v4.1.0",
|
"version": "v4.1.0",
|
||||||
"date": "2025-04-15T16:18:29Z"
|
"date": "2025-04-15T16:18:29Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Brandawg93/PeaNUT",
|
|
||||||
"version": "v5.7.2",
|
|
||||||
"date": "2025-04-15T15:44:49Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "slskd/slskd",
|
"name": "slskd/slskd",
|
||||||
"version": "0.22.5",
|
"version": "0.22.5",
|
||||||
"date": "2025-04-15T02:52:26Z"
|
"date": "2025-04-15T02:52:26Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "blakeblackshear/frigate",
|
|
||||||
"version": "v0.14.1",
|
|
||||||
"date": "2024-08-29T22:32:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "home-assistant/operating-system",
|
"name": "home-assistant/operating-system",
|
||||||
"version": "15.2",
|
"version": "15.2",
|
||||||
"date": "2025-04-14T15:37:12Z"
|
"date": "2025-04-14T15:37:12Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "bluenviron/mediamtx",
|
|
||||||
"version": "v1.12.0",
|
|
||||||
"date": "2025-04-14T10:36:04Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "open-webui/open-webui",
|
"name": "open-webui/open-webui",
|
||||||
"version": "v0.6.5",
|
"version": "v0.6.5",
|
||||||
@@ -639,11 +694,6 @@
|
|||||||
"version": "cassandra-5.0.4",
|
"version": "cassandra-5.0.4",
|
||||||
"date": "2025-04-10T16:32:00Z"
|
"date": "2025-04-10T16:32:00Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "linkwarden/linkwarden",
|
|
||||||
"version": "v2.10.0",
|
|
||||||
"date": "2025-04-08T12:33:57Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pelican-dev/panel",
|
"name": "pelican-dev/panel",
|
||||||
"version": "v1.0.0-beta19",
|
"version": "v1.0.0-beta19",
|
||||||
@@ -664,11 +714,6 @@
|
|||||||
"version": "v1.10.0",
|
"version": "v1.10.0",
|
||||||
"date": "2025-04-07T14:32:15Z"
|
"date": "2025-04-07T14:32:15Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fallenbagel/jellyseerr",
|
|
||||||
"version": "preview-back-to-axios",
|
|
||||||
"date": "2025-04-07T09:23:08Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Dolibarr/dolibarr",
|
"name": "Dolibarr/dolibarr",
|
||||||
"version": "21.0.1",
|
"version": "21.0.1",
|
||||||
@@ -684,11 +729,6 @@
|
|||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"date": "2025-04-06T17:35:41Z"
|
"date": "2025-04-06T17:35:41Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "kimai/kimai",
|
|
||||||
"version": "2.32.0",
|
|
||||||
"date": "2025-04-06T09:43:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "jellyfin/jellyfin",
|
"name": "jellyfin/jellyfin",
|
||||||
"version": "v10.10.7",
|
"version": "v10.10.7",
|
||||||
@@ -704,26 +744,11 @@
|
|||||||
"version": "2.3",
|
"version": "2.3",
|
||||||
"date": "2025-04-05T18:05:36Z"
|
"date": "2025-04-05T18:05:36Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "bastienwirtz/homer",
|
|
||||||
"version": "v25.04.1",
|
|
||||||
"date": "2025-04-05T12:39:18Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "navidrome/navidrome",
|
"name": "navidrome/navidrome",
|
||||||
"version": "v0.55.2",
|
"version": "v0.55.2",
|
||||||
"date": "2025-04-05T12:07:32Z"
|
"date": "2025-04-05T12:07:32Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "actualbudget/actual",
|
|
||||||
"version": "v25.4.0",
|
|
||||||
"date": "2025-04-05T04:14:57Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Koenkk/zigbee2mqtt",
|
|
||||||
"version": "2.2.1",
|
|
||||||
"date": "2025-04-04T20:15:48Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Athou/commafeed",
|
"name": "Athou/commafeed",
|
||||||
"version": "5.7.0",
|
"version": "5.7.0",
|
||||||
@@ -864,11 +889,6 @@
|
|||||||
"version": "v0.22.1",
|
"version": "v0.22.1",
|
||||||
"date": "2025-03-18T21:01:22Z"
|
"date": "2025-03-18T21:01:22Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "apache/couchdb",
|
|
||||||
"version": "3.4.3.post1",
|
|
||||||
"date": "2025-03-18T09:44:59Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "authelia/authelia",
|
"name": "authelia/authelia",
|
||||||
"version": "v4.39.1",
|
"version": "v4.39.1",
|
||||||
@@ -884,11 +904,6 @@
|
|||||||
"version": "2.303",
|
"version": "2.303",
|
||||||
"date": "2025-03-17T04:54:50Z"
|
"date": "2025-03-17T04:54:50Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "FreshRSS/FreshRSS",
|
|
||||||
"version": "1.26.1",
|
|
||||||
"date": "2025-03-13T21:34:25Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "transmission/transmission",
|
"name": "transmission/transmission",
|
||||||
"version": "4.0.1-beta.1",
|
"version": "4.0.1-beta.1",
|
||||||
@@ -969,11 +984,6 @@
|
|||||||
"version": "0.10.4",
|
"version": "0.10.4",
|
||||||
"date": "2025-02-25T18:13:42Z"
|
"date": "2025-02-25T18:13:42Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "juanfont/headscale",
|
|
||||||
"version": "v0.25.1",
|
|
||||||
"date": "2025-02-25T17:30:48Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "schlagmichdoch/PairDrop",
|
"name": "schlagmichdoch/PairDrop",
|
||||||
"version": "v1.11.2",
|
"version": "v1.11.2",
|
||||||
@@ -1074,11 +1084,6 @@
|
|||||||
"version": "v4.4.7",
|
"version": "v4.4.7",
|
||||||
"date": "2025-01-20T15:45:06Z"
|
"date": "2025-01-20T15:45:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "owncast/owncast",
|
|
||||||
"version": "v0.2.1",
|
|
||||||
"date": "2025-01-19T22:40:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "0xERR0R/blocky",
|
"name": "0xERR0R/blocky",
|
||||||
"version": "v0.25",
|
"version": "v0.25",
|
||||||
@@ -1204,11 +1209,6 @@
|
|||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"date": "2024-05-30T17:20:53Z"
|
"date": "2024-05-30T17:20:53Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "motioneye-project/motioneye",
|
|
||||||
"version": "0.42.1",
|
|
||||||
"date": "2020-06-07T07:27:04Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gnmyt/MySpeed",
|
"name": "gnmyt/MySpeed",
|
||||||
"version": "v1.0.9",
|
"version": "v1.0.9",
|
||||||
|
|||||||
@@ -16,7 +16,10 @@ import React from "react";
|
|||||||
import { Badge } from "./ui/badge";
|
import { Badge } from "./ui/badge";
|
||||||
import { Button } from "./ui/button";
|
import { Button } from "./ui/button";
|
||||||
import { DialogTitle } from "./ui/dialog";
|
import { DialogTitle } from "./ui/dialog";
|
||||||
import { Sparkles } from "lucide-react"; // <- Hinzugefügt
|
import { Sparkles } from "lucide-react";
|
||||||
|
import { TooltipContent, TooltipProvider } from "./ui/tooltip";
|
||||||
|
import { TooltipTrigger } from "./ui/tooltip";
|
||||||
|
import { Tooltip } from "./ui/tooltip";
|
||||||
|
|
||||||
export const formattedBadge = (type: string) => {
|
export const formattedBadge = (type: string) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@@ -111,16 +114,19 @@ export default function CommandMenu() {
|
|||||||
</kbd>
|
</kbd>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<TooltipProvider>
|
||||||
variant="outline"
|
<Tooltip delayDuration={100}>
|
||||||
size="icon"
|
<TooltipTrigger asChild>
|
||||||
onClick={openRandomScript}
|
<Button variant="outline" size="icon" onClick={openRandomScript} disabled={isLoading} className="hidden lg:flex">
|
||||||
title="Open random script"
|
<Sparkles className="size-4" />
|
||||||
disabled={isLoading}
|
<span className="sr-only">Open Random Script</span>
|
||||||
className="h-9 w-9"
|
</Button>
|
||||||
>
|
</TooltipTrigger>
|
||||||
<Sparkles className="h-5 w-5" />
|
<TooltipContent>
|
||||||
</Button>
|
<p>Open Random Script</p>
|
||||||
|
</TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
</TooltipProvider>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CommandDialog open={open} onOpenChange={setOpen}>
|
<CommandDialog open={open} onOpenChange={setOpen}>
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ export default function CodeCopyButton({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mt-4 flex">
|
<div className="mt-4 flex">
|
||||||
<Card className="flex items-center overflow-x-auto bg-primary-foreground pl-4">
|
<Card className="flex items-center overflow-x-auto bg-primary-foreground pl-4 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20">
|
||||||
<div className="overflow-x-auto whitespace-pre-wrap text-nowrap break-all pr-4 text-sm">
|
<div className="overflow-x-auto whitespace-pre-wrap text-nowrap break-all pr-4 text-sm [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20">
|
||||||
{!isMobile && children ? children : "Copy install command"}
|
{!isMobile && children ? children : "Copy install command"}
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
|
|||||||
79
install/alpine-komodo-install.sh
Normal file
79
install/alpine-komodo-install.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://komo.do/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apk add --no-cache ca-certificates openssl
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setup Docker Repository"
|
||||||
|
$STD apk add --no-cache docker docker-cli docker-compose openrc
|
||||||
|
msg_ok "Setup Docker Repository"
|
||||||
|
|
||||||
|
msg_info "Enabling Docker Service"
|
||||||
|
$STD rc-update add docker boot
|
||||||
|
$STD service docker start
|
||||||
|
msg_ok "Enabled Docker Service"
|
||||||
|
|
||||||
|
echo "Choose the database for Komodo installation:"
|
||||||
|
echo "1) MongoDB (recommended)"
|
||||||
|
echo "2) SQLite"
|
||||||
|
echo "3) PostgreSQL"
|
||||||
|
read -rp "Enter your choice (default: 1): " DB_CHOICE
|
||||||
|
DB_CHOICE=${DB_CHOICE:-1}
|
||||||
|
|
||||||
|
case $DB_CHOICE in
|
||||||
|
1)
|
||||||
|
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
DB_COMPOSE_FILE="sqlite.compose.yaml"
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
DB_COMPOSE_FILE="postgres.compose.yaml"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid choice. Defaulting to MongoDB."
|
||||||
|
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
mkdir -p /opt/komodo
|
||||||
|
cd /opt/komodo
|
||||||
|
curl -fsSL "https://raw.githubusercontent.com/moghtech/komodo/main/compose/$DB_COMPOSE_FILE" -o "$(basename "$DB_COMPOSE_FILE")"
|
||||||
|
|
||||||
|
msg_info "Setup Komodo Environment"
|
||||||
|
curl -fsSL "https://raw.githubusercontent.com/moghtech/komodo/main/compose/compose.env" -o "/opt/komodo/compose.env"
|
||||||
|
DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+=')
|
||||||
|
PASSKEY=$(openssl rand -base64 24 | tr -d '/+=')
|
||||||
|
WEBHOOK_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
|
||||||
|
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
|
||||||
|
|
||||||
|
sed -i "s/^KOMODO_DB_USERNAME=.*/KOMODO_DB_USERNAME=komodo_admin/" /opt/komodo/compose.env
|
||||||
|
sed -i "s/^KOMODO_DB_PASSWORD=.*/KOMODO_DB_PASSWORD=${DB_PASSWORD}/" /opt/komodo/compose.env
|
||||||
|
sed -i "s/^KOMODO_PASSKEY=.*/KOMODO_PASSKEY=${PASSKEY}/" /opt/komodo/compose.env
|
||||||
|
sed -i "s/^KOMODO_WEBHOOK_SECRET=.*/KOMODO_WEBHOOK_SECRET=${WEBHOOK_SECRET}/" /opt/komodo/compose.env
|
||||||
|
sed -i "s/^KOMODO_JWT_SECRET=.*/KOMODO_JWT_SECRET=${JWT_SECRET}/" /opt/komodo/compose.env
|
||||||
|
msg_ok "Setup Komodo Environment"
|
||||||
|
|
||||||
|
msg_info "Initialize Komodo"
|
||||||
|
$STD docker compose -p komodo -f "/opt/komodo/$DB_COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||||
|
msg_ok "Initialized Komodo"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apk cache clean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster) | Co-Author: Slaviša Arežina (tremor021)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/dani-garcia/vaultwarden
|
# Source: https://github.com/dani-garcia/vaultwarden
|
||||||
|
|
||||||
@@ -14,24 +14,24 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apk add newt
|
$STD apk add --no-cache \
|
||||||
$STD apk add curl
|
openssl \
|
||||||
$STD apk add openssl
|
argon2
|
||||||
$STD apk add openssh
|
|
||||||
$STD apk add nano
|
|
||||||
$STD apk add mc
|
|
||||||
$STD apk add argon2
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Alpine-Vaultwarden"
|
msg_info "Installing Alpine-Vaultwarden"
|
||||||
$STD apk add vaultwarden
|
$STD apk add --no-cache vaultwarden
|
||||||
sed -i -e 's|export WEB_VAULT_ENABLED=.*|export WEB_VAULT_ENABLED=true|' /etc/conf.d/vaultwarden
|
sed -i '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 ADMIN_TOKEN=''" >>/etc/conf.d/vaultwarden
|
||||||
echo -e "export ROCKET_ADDRESS=0.0.0.0" >>/etc/conf.d/vaultwarden
|
echo -e "export ROCKET_ADDRESS=0.0.0.0" >>/etc/conf.d/vaultwarden
|
||||||
|
echo -e "export ROCKET_TLS='{certs=\"/etc/ssl/certs/vaultwarden-selfsigned.crt\",key=\"/etc/ssl/private/vaultwarden-selfsigned.key\"}'" >>/etc/conf.d/vaultwarden
|
||||||
|
$STD openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/vaultwarden-selfsigned.key -out /etc/ssl/certs/vaultwarden-selfsigned.crt -subj "/CN=localhost" -addext "subjectAltName=DNS:localhost"
|
||||||
|
chown vaultwarden:vaultwarden /etc/ssl/certs/vaultwarden-selfsigned.crt
|
||||||
|
chown vaultwarden:vaultwarden /etc/ssl/private/vaultwarden-selfsigned.key
|
||||||
msg_ok "Installed Alpine-Vaultwarden"
|
msg_ok "Installed Alpine-Vaultwarden"
|
||||||
|
|
||||||
msg_info "Installing Web-Vault"
|
msg_info "Installing Web-Vault"
|
||||||
$STD apk add vaultwarden-web-vault
|
$STD apk add --no-cache vaultwarden-web-vault
|
||||||
msg_ok "Installed Web-Vault"
|
msg_ok "Installed Web-Vault"
|
||||||
|
|
||||||
msg_info "Starting Alpine-Vaultwarden"
|
msg_info "Starting Alpine-Vaultwarden"
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ msg_ok "Setup Apache Tomcat"
|
|||||||
|
|
||||||
msg_info "Setup Apache Guacamole"
|
msg_info "Setup Apache Guacamole"
|
||||||
mkdir -p /etc/guacamole/{extensions,lib}
|
mkdir -p /etc/guacamole/{extensions,lib}
|
||||||
RELEASE_SERVER=$(curl -fsSL https://api.github.com/repos/apache/guacamole-server/tags | jq -r '.[0].name')
|
RELEASE_SERVER=$(curl -fsSL https://api.github.com/repos/apache/guacamole-server/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||||
curl -fsSL "https://api.github.com/repos/apache/guacamole-server/tarball/refs/tags/${RELEASE_SERVER}" | tar -xz --strip-components=1 -C /opt/apache-guacamole/server
|
curl -fsSL "https://api.github.com/repos/apache/guacamole-server/tarball/refs/tags/${RELEASE_SERVER}" | tar -xz --strip-components=1 -C /opt/apache-guacamole/server
|
||||||
cd /opt/apache-guacamole/server
|
cd /opt/apache-guacamole/server
|
||||||
$STD autoreconf -fi
|
$STD autoreconf -fi
|
||||||
@@ -60,7 +60,7 @@ $STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
|
|||||||
$STD make
|
$STD make
|
||||||
$STD make install
|
$STD make install
|
||||||
$STD ldconfig
|
$STD ldconfig
|
||||||
RELEASE_CLIENT=$(curl -fsSL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[0].name')
|
RELEASE_CLIENT=$(curl -fsSL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||||
curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_CLIENT}/binary/guacamole-${RELEASE_CLIENT}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_CLIENT}/binary/guacamole-${RELEASE_CLIENT}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
||||||
cd /root
|
cd /root
|
||||||
curl -fsSL "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz" -o "/root/mysql-connector-java-8.0.26.tar.gz"
|
curl -fsSL "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz" -o "/root/mysql-connector-java-8.0.26.tar.gz"
|
||||||
|
|||||||
@@ -18,23 +18,15 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
make \
|
make \
|
||||||
git \
|
git \
|
||||||
postgresql \
|
|
||||||
build-essential \
|
build-essential \
|
||||||
cargo \
|
cargo
|
||||||
gnupg
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
NODE_VERSION="22"
|
||||||
mkdir -p /etc/apt/keyrings
|
NODE_MODULE="yarn@latest"
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
install_node_and_modules
|
||||||
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
|
PG_VERSION="15"
|
||||||
msg_ok "Set up Node.js Repository"
|
install_postgresql
|
||||||
|
|
||||||
msg_info "Installing Node.js/Yarn"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
$STD npm install -g yarn
|
|
||||||
msg_ok "Installed Node.js/Yarn"
|
|
||||||
|
|
||||||
msg_info "Installing Rust"
|
msg_info "Installing Rust"
|
||||||
curl -fsSL https://sh.rustup.rs -o rustup-init.sh
|
curl -fsSL https://sh.rustup.rs -o rustup-init.sh
|
||||||
@@ -92,7 +84,7 @@ fi
|
|||||||
msg_info "Installing Linkwarden (Patience)"
|
msg_info "Installing Linkwarden (Patience)"
|
||||||
cd /opt
|
cd /opt
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip")
|
curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
|
||||||
unzip -q ${RELEASE}.zip
|
unzip -q ${RELEASE}.zip
|
||||||
mv linkwarden-${RELEASE:1} /opt/linkwarden
|
mv linkwarden-${RELEASE:1} /opt/linkwarden
|
||||||
cd /opt/linkwarden
|
cd /opt/linkwarden
|
||||||
@@ -106,8 +98,9 @@ NEXTAUTH_SECRET=${SECRET_KEY}
|
|||||||
NEXTAUTH_URL=http://${IP}:3000
|
NEXTAUTH_URL=http://${IP}:3000
|
||||||
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
|
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
|
||||||
" >$env_path
|
" >$env_path
|
||||||
$STD yarn build
|
$STD yarn prisma:generate
|
||||||
$STD yarn prisma migrate deploy
|
$STD yarn web:build
|
||||||
|
$STD yarn prisma:deploy
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
msg_ok "Installed Linkwarden"
|
msg_ok "Installed Linkwarden"
|
||||||
|
|
||||||
@@ -121,7 +114,7 @@ After=network.target
|
|||||||
Type=exec
|
Type=exec
|
||||||
Environment=PATH=$PATH
|
Environment=PATH=$PATH
|
||||||
WorkingDirectory=/opt/linkwarden
|
WorkingDirectory=/opt/linkwarden
|
||||||
ExecStart=/usr/bin/yarn start
|
ExecStart=/usr/bin/yarn concurrently:start
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ $STD apt-get install -y \
|
|||||||
python3-pip \
|
python3-pip \
|
||||||
python3-venv \
|
python3-venv \
|
||||||
python3-dev
|
python3-dev
|
||||||
msg_ok "Installed Python"
|
msg_ok "Installed Python"
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL"
|
msg_info "Setting up PostgreSQL"
|
||||||
DB_NAME=netbox
|
DB_NAME=netbox
|
||||||
@@ -54,7 +54,7 @@ cd /opt
|
|||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/netbox-community/netbox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/netbox-community/netbox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip")
|
curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip")
|
||||||
unzip -q "v${RELEASE}.zip"
|
unzip -q "v${RELEASE}.zip"
|
||||||
mv /opt/netbox-${RELEASE}/ /opt/netbox
|
mv /opt/netbox-"${RELEASE}"/ /opt/netbox
|
||||||
|
|
||||||
$STD adduser --system --group netbox
|
$STD adduser --system --group netbox
|
||||||
chown --recursive netbox /opt/netbox/netbox/media/
|
chown --recursive netbox /opt/netbox/netbox/media/
|
||||||
@@ -68,8 +68,8 @@ ESCAPED_SECRET_KEY=$(printf '%s\n' "$SECRET_KEY" | sed 's/[&/\]/\\&/g')
|
|||||||
|
|
||||||
sed -i 's/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ["*"]/' /opt/netbox/netbox/netbox/configuration.py
|
sed -i 's/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ["*"]/' /opt/netbox/netbox/netbox/configuration.py
|
||||||
sed -i "s|SECRET_KEY = ''|SECRET_KEY = '${ESCAPED_SECRET_KEY}'|" /opt/netbox/netbox/netbox/configuration.py
|
sed -i "s|SECRET_KEY = ''|SECRET_KEY = '${ESCAPED_SECRET_KEY}'|" /opt/netbox/netbox/netbox/configuration.py
|
||||||
sed -i "/DATABASE = {/,/}/s/'USER': '[^']*'/'USER': '$DB_USER'/" /opt/netbox/netbox/netbox/configuration.py
|
sed -i "/DATABASES = {/,/}/s/'USER': '[^']*'/'USER': '$DB_USER'/" /opt/netbox/netbox/netbox/configuration.py
|
||||||
sed -i "/DATABASE = {/,/}/s/'PASSWORD': '[^']*'/'PASSWORD': '$DB_PASS'/" /opt/netbox/netbox/netbox/configuration.py
|
sed -i "/DATABASES = {/,/}/s/'PASSWORD': '[^']*'/'PASSWORD': '$DB_PASS'/" /opt/netbox/netbox/netbox/configuration.py
|
||||||
|
|
||||||
$STD /opt/netbox/upgrade.sh
|
$STD /opt/netbox/upgrade.sh
|
||||||
ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
|
ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
|
||||||
@@ -85,7 +85,7 @@ mv /opt/netbox/contrib/*.service /etc/systemd/system/
|
|||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable -q --now netbox netbox-rq
|
systemctl enable -q --now netbox netbox-rq
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
|
||||||
echo -e "Netbox Secret: \e[32m$SECRET_KEY\e[0m" >>~/netbox.creds
|
echo -e "Netbox Secret: \e[32m$SECRET_KEY\e[0m" >>~/netbox.creds
|
||||||
msg_ok "Installed NetBox"
|
msg_ok "Installed NetBox"
|
||||||
|
|
||||||
|
|||||||
@@ -15,28 +15,23 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -qqy install \
|
$STD apt-get install -y git \
|
||||||
git \
|
|
||||||
build-essential \
|
build-essential \
|
||||||
pkgconf \
|
pkgconf \
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
libmariadb-dev-compat \
|
libmariadb-dev-compat \
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
argon2
|
argon2 \
|
||||||
|
ssl-cert
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
WEBVAULT=$(curl -fsSL https://api.github.com/repos/dani-garcia/bw_web_builds/releases/latest |
|
WEBVAULT=$(curl -fsSL https://api.github.com/repos/dani-garcia/bw_web_builds/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
grep "tag_name" |
|
VAULT=$(curl -fsSL https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
|
|
||||||
VAULT=$(curl -fsSL https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest |
|
|
||||||
grep "tag_name" |
|
|
||||||
awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
|
|
||||||
msg_info "Installing Rust"
|
msg_info "Installing Rust"
|
||||||
curl -fsSL https://sh.rustup.rs -o rustup-init.sh
|
curl -fsSL https://sh.rustup.rs -o rustup-init.sh
|
||||||
$STD bash rustup-init.sh -y --profile minimal
|
$STD bash rustup-init.sh -y --profile minimal
|
||||||
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
|
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >>~/.bashrc
|
||||||
export PATH="$HOME/.cargo/bin:$PATH"
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
rm rustup-init.sh
|
rm rustup-init.sh
|
||||||
msg_ok "Installed Rust"
|
msg_ok "Installed Rust"
|
||||||
@@ -54,19 +49,23 @@ mkdir -p /opt/vaultwarden/data
|
|||||||
cp target/release/vaultwarden /opt/vaultwarden/bin/
|
cp target/release/vaultwarden /opt/vaultwarden/bin/
|
||||||
|
|
||||||
msg_info "Downloading Web-Vault ${WEBVAULT}"
|
msg_info "Downloading Web-Vault ${WEBVAULT}"
|
||||||
$STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/$WEBVAULT/bw_web_$WEBVAULT.tar.gz
|
$STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/"$WEBVAULT"/bw_web_"$WEBVAULT".tar.gz
|
||||||
$STD tar -xzf bw_web_$WEBVAULT.tar.gz -C /opt/vaultwarden/
|
$STD tar -xzf bw_web_"$WEBVAULT".tar.gz -C /opt/vaultwarden/
|
||||||
msg_ok "Downloaded Web-Vault ${WEBVAULT}"
|
msg_ok "Downloaded Web-Vault ${WEBVAULT}"
|
||||||
|
|
||||||
cat <<EOF >/opt/vaultwarden/.env
|
cat <<EOF >/opt/vaultwarden/.env
|
||||||
ADMIN_TOKEN=''
|
ADMIN_TOKEN=''
|
||||||
ROCKET_ADDRESS=0.0.0.0
|
ROCKET_ADDRESS=0.0.0.0
|
||||||
|
ROCKET_TLS='{certs="/opt/vaultwarden/ssl-cert-snakeoil.pem",key="/opt/vaultwarden/ssl-cert-snakeoil.key"}'
|
||||||
DATA_FOLDER=/opt/vaultwarden/data
|
DATA_FOLDER=/opt/vaultwarden/data
|
||||||
DATABASE_MAX_CONNS=10
|
DATABASE_MAX_CONNS=10
|
||||||
WEB_VAULT_FOLDER=/opt/vaultwarden/web-vault
|
WEB_VAULT_FOLDER=/opt/vaultwarden/web-vault
|
||||||
WEB_VAULT_ENABLED=true
|
WEB_VAULT_ENABLED=true
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
mv /etc/ssl/certs/ssl-cert-snakeoil.pem /opt/vaultwarden/
|
||||||
|
mv /etc/ssl/private/ssl-cert-snakeoil.key /opt/vaultwarden/
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
chown -R vaultwarden:vaultwarden /opt/vaultwarden/
|
chown -R vaultwarden:vaultwarden /opt/vaultwarden/
|
||||||
chown root:root /opt/vaultwarden/bin/vaultwarden
|
chown root:root /opt/vaultwarden/bin/vaultwarden
|
||||||
|
|||||||
1361
misc/tools.func
1361
misc/tools.func
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
|||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
function header_info {
|
function header_info {
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
______ __ _____
|
______ __ _____
|
||||||
/ ____/___ ____/ /__ / ___/___ ______ _____ _____
|
/ ____/___ ____/ /__ / ___/___ ______ _____ _____
|
||||||
/ / / __ \/ __ / _ \ \__ \/ _ \/ ___/ | / / _ \/ ___/
|
/ / / __ \/ __ / _ \ \__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||||
@@ -26,7 +26,7 @@ CL=$(echo "\033[m")
|
|||||||
BFR="\\r\\033[K"
|
BFR="\\r\\033[K"
|
||||||
HOLD="-"
|
HOLD="-"
|
||||||
CM="${GN}✓${CL}"
|
CM="${GN}✓${CL}"
|
||||||
APP="Code Server"
|
APP="Coder Code Server"
|
||||||
hostname="$(hostname)"
|
hostname="$(hostname)"
|
||||||
set -o errexit
|
set -o errexit
|
||||||
set -o errtrace
|
set -o errtrace
|
||||||
@@ -37,40 +37,40 @@ alias die='EXIT=$? LINE=$LINENO error_exit'
|
|||||||
trap die ERR
|
trap die ERR
|
||||||
|
|
||||||
function error_exit() {
|
function error_exit() {
|
||||||
trap - ERR
|
trap - ERR
|
||||||
local reason="Unknown failure occured."
|
local reason="Unknown failure occured."
|
||||||
local msg="${1:-$reason}"
|
local msg="${1:-$reason}"
|
||||||
local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
|
local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
|
||||||
echo -e "$flag $msg" 1>&2
|
echo -e "$flag $msg" 1>&2
|
||||||
exit $EXIT
|
exit "$EXIT"
|
||||||
}
|
}
|
||||||
clear
|
clear
|
||||||
header_info
|
header_info
|
||||||
if command -v pveversion >/dev/null 2>&1; then
|
if command -v pveversion >/dev/null 2>&1; then
|
||||||
echo -e "⚠️ Can't Install on Proxmox "
|
echo -e "⚠️ Can't Install on Proxmox "
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [ -e /etc/alpine-release ]; then
|
if [ -e /etc/alpine-release ]; then
|
||||||
echo -e "⚠️ Can't Install on Alpine"
|
echo -e "⚠️ Can't Install on Alpine"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
while true; do
|
while true; do
|
||||||
read -p "This will Install ${APP} on $hostname. Proceed(y/n)?" yn
|
read -p "This will Install ${APP} on $hostname. Proceed(y/n)?" yn
|
||||||
case $yn in
|
case $yn in
|
||||||
[Yy]*) break ;;
|
[Yy]*) break ;;
|
||||||
[Nn]*) exit ;;
|
[Nn]*) exit ;;
|
||||||
*) echo "Please answer yes or no." ;;
|
*) echo "Please answer yes or no." ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
function msg_info() {
|
function msg_info() {
|
||||||
local msg="$1"
|
local msg="$1"
|
||||||
echo -ne " ${HOLD} ${YW}${msg}..."
|
echo -ne " ${HOLD} ${YW}${msg}..."
|
||||||
}
|
}
|
||||||
|
|
||||||
function msg_ok() {
|
function msg_ok() {
|
||||||
local msg="$1"
|
local msg="$1"
|
||||||
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
|
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
|
||||||
}
|
}
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
@@ -80,22 +80,22 @@ apt-get install -y git &>/dev/null
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
VERSION=$(curl -fsSL https://api.github.com/repos/coder/code-server/releases/latest |
|
VERSION=$(curl -fsSL https://api.github.com/repos/coder/code-server/releases/latest |
|
||||||
grep "tag_name" |
|
grep "tag_name" |
|
||||||
awk '{print substr($2, 3, length($2)-4) }')
|
awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
msg_info "Installing Code-Server v${VERSION}"
|
msg_info "Installing Code-Server v${VERSION}"
|
||||||
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server_${VERSION}_amd64.deb &>/dev/null
|
curl -fOL https://github.com/coder/code-server/releases/download/v"$VERSION"/code-server_"${VERSION}"_amd64.deb &>/dev/null
|
||||||
dpkg -i code-server_${VERSION}_amd64.deb &>/dev/null
|
dpkg -i code-server_"${VERSION}"_amd64.deb &>/dev/null
|
||||||
rm -rf code-server_${VERSION}_amd64.deb
|
rm -rf code-server_"${VERSION}"_amd64.deb
|
||||||
mkdir -p ~/.config/code-server/
|
mkdir -p ~/.config/code-server/
|
||||||
systemctl enable -q --now code-server@$USER
|
systemctl enable -q --now code-server@"$USER"
|
||||||
cat <<EOF >~/.config/code-server/config.yaml
|
cat <<EOF >~/.config/code-server/config.yaml
|
||||||
bind-addr: 0.0.0.0:8680
|
bind-addr: 0.0.0.0:8680
|
||||||
auth: none
|
auth: none
|
||||||
password:
|
password:
|
||||||
cert: false
|
cert: false
|
||||||
EOF
|
EOF
|
||||||
systemctl restart code-server@$USER
|
systemctl restart code-server@"$USER"
|
||||||
msg_ok "Installed Code-Server v${VERSION} on $hostname"
|
msg_ok "Installed Code-Server v${VERSION} on $hostname"
|
||||||
|
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
179
vm/docker-vm.sh
179
vm/docker-vm.sh
@@ -1,12 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: thost96 (thost96)
|
# Author: thost96 (thost96) | Co-Author: michelroegl-brunner
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
source /dev/stdin <<<$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
|
source /dev/stdin <<<$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
|
||||||
|
|
||||||
function header_info {
|
function header_info() {
|
||||||
clear
|
clear
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
____ __ _ ____ ___
|
____ __ _ ____ ___
|
||||||
@@ -36,10 +36,30 @@ BGN=$(echo "\033[4;92m")
|
|||||||
GN=$(echo "\033[1;92m")
|
GN=$(echo "\033[1;92m")
|
||||||
DGN=$(echo "\033[32m")
|
DGN=$(echo "\033[32m")
|
||||||
CL=$(echo "\033[m")
|
CL=$(echo "\033[m")
|
||||||
|
|
||||||
|
CL=$(echo "\033[m")
|
||||||
|
BOLD=$(echo "\033[1m")
|
||||||
BFR="\\r\\033[K"
|
BFR="\\r\\033[K"
|
||||||
HOLD="-"
|
HOLD=" "
|
||||||
CM="${GN}✓${CL}"
|
TAB=" "
|
||||||
CROSS="${RD}✗${CL}"
|
|
||||||
|
CM="${TAB}✔️${TAB}${CL}"
|
||||||
|
CROSS="${TAB}✖️${TAB}${CL}"
|
||||||
|
INFO="${TAB}💡${TAB}${CL}"
|
||||||
|
OS="${TAB}🖥️${TAB}${CL}"
|
||||||
|
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
||||||
|
DISKSIZE="${TAB}💾${TAB}${CL}"
|
||||||
|
CPUCORE="${TAB}🧠${TAB}${CL}"
|
||||||
|
RAMSIZE="${TAB}🛠️${TAB}${CL}"
|
||||||
|
CONTAINERID="${TAB}🆔${TAB}${CL}"
|
||||||
|
HOSTNAME="${TAB}🏠${TAB}${CL}"
|
||||||
|
BRIDGE="${TAB}🌉${TAB}${CL}"
|
||||||
|
GATEWAY="${TAB}🌐${TAB}${CL}"
|
||||||
|
DEFAULT="${TAB}⚙️${TAB}${CL}"
|
||||||
|
MACADDRESS="${TAB}🔗${TAB}${CL}"
|
||||||
|
VLANTAG="${TAB}🏷️${TAB}${CL}"
|
||||||
|
CREATING="${TAB}🚀${TAB}${CL}"
|
||||||
|
ADVANCED="${TAB}🧩${TAB}${CL}"
|
||||||
THIN="discard=on,ssd=1,"
|
THIN="discard=on,ssd=1,"
|
||||||
set -e
|
set -e
|
||||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
||||||
@@ -65,30 +85,31 @@ function cleanup_vmid() {
|
|||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
post_update_to_api "done" "none"
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
TEMP_DIR=$(mktemp -d)
|
TEMP_DIR=$(mktemp -d)
|
||||||
pushd $TEMP_DIR >/dev/null
|
pushd $TEMP_DIR >/dev/null
|
||||||
if whiptail --backtitle "Proxmox VE Helper Scripts" --title "Docker VM" --yesno "This will create a New Docker VM. Proceed?" 10 58; then
|
if whiptail --backtitle "Proxmox VE Helper Scripts" --title "Debian 12 VM" --yesno "This will create a New Debian 12 VM. Proceed?" 10 58; then
|
||||||
:
|
:
|
||||||
else
|
else
|
||||||
header_info && echo -e "⚠ User exited script \n" && exit
|
header_info && echo -e "${CROSS}${RD}User exited script${CL}\n" && exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function msg_info() {
|
function msg_info() {
|
||||||
local msg="$1"
|
local msg="$1"
|
||||||
echo -ne " ${HOLD} ${YW}${msg}..."
|
echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function msg_ok() {
|
function msg_ok() {
|
||||||
local msg="$1"
|
local msg="$1"
|
||||||
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
|
echo -e "${BFR}${CM}${GN}${msg}${CL}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function msg_error() {
|
function msg_error() {
|
||||||
local msg="$1"
|
local msg="$1"
|
||||||
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
|
echo -e "${BFR}${CROSS}${RD}${msg}${CL}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_root() {
|
function check_root() {
|
||||||
@@ -103,7 +124,7 @@ function check_root() {
|
|||||||
|
|
||||||
function pve_check() {
|
function pve_check() {
|
||||||
if ! pveversion | grep -Eq "pve-manager/8\.[1-4](\.[0-9]+)*"; then
|
if ! pveversion | grep -Eq "pve-manager/8\.[1-4](\.[0-9]+)*"; then
|
||||||
msg_error "This version of Proxmox Virtual Environment is not supported"
|
msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported"
|
||||||
echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
|
echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
|
||||||
echo -e "Exiting..."
|
echo -e "Exiting..."
|
||||||
sleep 2
|
sleep 2
|
||||||
@@ -113,12 +134,11 @@ function pve_check() {
|
|||||||
|
|
||||||
function arch_check() {
|
function arch_check() {
|
||||||
if [ "$(dpkg --print-architecture)" != "amd64" ]; then
|
if [ "$(dpkg --print-architecture)" != "amd64" ]; then
|
||||||
if [ "$(dpkg --print-architecture)" != "arm64" ]; then
|
echo -e "\n ${INFO}${YWB}This script will not work with PiMox! \n"
|
||||||
msg_error "This script will not work with your CPU Architekture \n"
|
echo -e "\n ${YWB}Visit https://github.com/asylumexp/Proxmox for ARM64 support. \n"
|
||||||
echo -e "Exiting..."
|
echo -e "Exiting..."
|
||||||
sleep 2
|
sleep 2
|
||||||
exit
|
exit
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +157,7 @@ function ssh_check() {
|
|||||||
|
|
||||||
function exit-script() {
|
function exit-script() {
|
||||||
clear
|
clear
|
||||||
echo -e "⚠ User exited script \n"
|
echo -e "\n${CROSS}${RD}User exited script${CL}\n"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,6 +166,7 @@ function default_settings() {
|
|||||||
FORMAT=",efitype=4m"
|
FORMAT=",efitype=4m"
|
||||||
MACHINE=""
|
MACHINE=""
|
||||||
DISK_CACHE=""
|
DISK_CACHE=""
|
||||||
|
DISK_SIZE="8G"
|
||||||
HN="docker"
|
HN="docker"
|
||||||
CPU_TYPE=""
|
CPU_TYPE=""
|
||||||
CORE_COUNT="2"
|
CORE_COUNT="2"
|
||||||
@@ -156,19 +177,20 @@ function default_settings() {
|
|||||||
MTU=""
|
MTU=""
|
||||||
START_VM="yes"
|
START_VM="yes"
|
||||||
METHOD="default"
|
METHOD="default"
|
||||||
echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
|
echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
|
||||||
echo -e "${DGN}Using Machine Type: ${BGN}i440fx${CL}"
|
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
|
||||||
echo -e "${DGN}Using Disk Cache: ${BGN}None${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
|
||||||
echo -e "${DGN}Using Hostname: ${BGN}${HN}${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}None${CL}"
|
||||||
echo -e "${DGN}Using CPU Model: ${BGN}KVM64${CL}"
|
echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}${HN}${CL}"
|
||||||
echo -e "${DGN}Allocated Cores: ${BGN}${CORE_COUNT}${CL}"
|
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}KVM64${CL}"
|
||||||
echo -e "${DGN}Allocated RAM: ${BGN}${RAM_SIZE}${CL}"
|
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
|
||||||
echo -e "${DGN}Using Bridge: ${BGN}${BRG}${CL}"
|
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}${CL}"
|
||||||
echo -e "${DGN}Using MAC Address: ${BGN}${MAC}${CL}"
|
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}${BRG}${CL}"
|
||||||
echo -e "${DGN}Using VLAN: ${BGN}Default${CL}"
|
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}${MAC}${CL}"
|
||||||
echo -e "${DGN}Using Interface MTU Size: ${BGN}Default${CL}"
|
echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}Default${CL}"
|
||||||
echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}"
|
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}Default${CL}"
|
||||||
echo -e "${BL}Creating a Docker VM using the above default settings${CL}"
|
echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}yes${CL}"
|
||||||
|
echo -e "${CREATING}${BOLD}${DGN}Creating a Debian 12 VM using the above default settings${CL}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function advanced_settings() {
|
function advanced_settings() {
|
||||||
@@ -183,7 +205,7 @@ function advanced_settings() {
|
|||||||
sleep 2
|
sleep 2
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
echo -e "${DGN}Virtual Machine ID: ${BGN}$VMID${CL}"
|
echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}$VMID${CL}"
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
@@ -195,11 +217,11 @@ function advanced_settings() {
|
|||||||
"q35" "Machine q35" OFF \
|
"q35" "Machine q35" OFF \
|
||||||
3>&1 1>&2 2>&3); then
|
3>&1 1>&2 2>&3); then
|
||||||
if [ $MACH = q35 ]; then
|
if [ $MACH = q35 ]; then
|
||||||
echo -e "${DGN}Using Machine Type: ${BGN}$MACH${CL}"
|
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}"
|
||||||
FORMAT=""
|
FORMAT=""
|
||||||
MACHINE=" -machine q35"
|
MACHINE=" -machine q35"
|
||||||
else
|
else
|
||||||
echo -e "${DGN}Using Machine Type: ${BGN}$MACH${CL}"
|
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}"
|
||||||
FORMAT=",efitype=4m"
|
FORMAT=",efitype=4m"
|
||||||
MACHINE=""
|
MACHINE=""
|
||||||
fi
|
fi
|
||||||
@@ -207,28 +229,44 @@ function advanced_settings() {
|
|||||||
exit-script
|
exit-script
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GiB (e.g., 10, 20)" 8 58 "$DISK_SIZE" --title "DISK SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||||
|
DISK_SIZE=$(echo "$DISK_SIZE" | tr -d ' ')
|
||||||
|
if [[ "$DISK_SIZE" =~ ^[0-9]+$ ]]; then
|
||||||
|
DISK_SIZE="${DISK_SIZE}G"
|
||||||
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}"
|
||||||
|
elif [[ "$DISK_SIZE" =~ ^[0-9]+G$ ]]; then
|
||||||
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}"
|
||||||
|
else
|
||||||
|
echo -e "${DISKSIZE}${BOLD}${RD}Invalid Disk Size. Please use a number (e.g., 10 or 10G).${CL}"
|
||||||
|
exit-script
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit-script
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if DISK_CACHE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
|
if DISK_CACHE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
|
||||||
"0" "None (Default)" ON \
|
"0" "None (Default)" ON \
|
||||||
"1" "Write Through" OFF \
|
"1" "Write Through" OFF \
|
||||||
3>&1 1>&2 2>&3); then
|
3>&1 1>&2 2>&3); then
|
||||||
if [ $DISK_CACHE = "1" ]; then
|
if [ $DISK_CACHE = "1" ]; then
|
||||||
echo -e "${DGN}Using Disk Cache: ${BGN}Write Through${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}Write Through${CL}"
|
||||||
DISK_CACHE="cache=writethrough,"
|
DISK_CACHE="cache=writethrough,"
|
||||||
else
|
else
|
||||||
echo -e "${DGN}Using Disk Cache: ${BGN}None${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}None${CL}"
|
||||||
DISK_CACHE=""
|
DISK_CACHE=""
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 docker --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 debian --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||||
if [ -z $VM_NAME ]; then
|
if [ -z $VM_NAME ]; then
|
||||||
HN="docker"
|
HN="debian"
|
||||||
echo -e "${DGN}Using Hostname: ${BGN}$HN${CL}"
|
echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}"
|
||||||
else
|
else
|
||||||
HN=$(echo ${VM_NAME,,} | tr -d ' ')
|
HN=$(echo ${VM_NAME,,} | tr -d ' ')
|
||||||
echo -e "${DGN}Using Hostname: ${BGN}$HN${CL}"
|
echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
@@ -239,10 +277,10 @@ function advanced_settings() {
|
|||||||
"1" "Host" OFF \
|
"1" "Host" OFF \
|
||||||
3>&1 1>&2 2>&3); then
|
3>&1 1>&2 2>&3); then
|
||||||
if [ $CPU_TYPE1 = "1" ]; then
|
if [ $CPU_TYPE1 = "1" ]; then
|
||||||
echo -e "${DGN}Using CPU Model: ${BGN}Host${CL}"
|
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}Host${CL}"
|
||||||
CPU_TYPE=" -cpu host"
|
CPU_TYPE=" -cpu host"
|
||||||
else
|
else
|
||||||
echo -e "${DGN}Using CPU Model: ${BGN}KVM64${CL}"
|
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}KVM64${CL}"
|
||||||
CPU_TYPE=""
|
CPU_TYPE=""
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -252,20 +290,20 @@ function advanced_settings() {
|
|||||||
if CORE_COUNT=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 2 --title "CORE COUNT" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
if CORE_COUNT=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 2 --title "CORE COUNT" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||||
if [ -z $CORE_COUNT ]; then
|
if [ -z $CORE_COUNT ]; then
|
||||||
CORE_COUNT="2"
|
CORE_COUNT="2"
|
||||||
echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}"
|
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}"
|
||||||
else
|
else
|
||||||
echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}"
|
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 4096 --title "RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 2048 --title "RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||||
if [ -z $RAM_SIZE ]; then
|
if [ -z $RAM_SIZE ]; then
|
||||||
RAM_SIZE="4096"
|
RAM_SIZE="2048"
|
||||||
echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}"
|
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}"
|
||||||
else
|
else
|
||||||
echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}"
|
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
@@ -274,9 +312,9 @@ function advanced_settings() {
|
|||||||
if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||||
if [ -z $BRG ]; then
|
if [ -z $BRG ]; then
|
||||||
BRG="vmbr0"
|
BRG="vmbr0"
|
||||||
echo -e "${DGN}Using Bridge: ${BGN}$BRG${CL}"
|
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}"
|
||||||
else
|
else
|
||||||
echo -e "${DGN}Using Bridge: ${BGN}$BRG${CL}"
|
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
@@ -285,10 +323,10 @@ function advanced_settings() {
|
|||||||
if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a MAC Address" 8 58 $GEN_MAC --title "MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a MAC Address" 8 58 $GEN_MAC --title "MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||||
if [ -z $MAC1 ]; then
|
if [ -z $MAC1 ]; then
|
||||||
MAC="$GEN_MAC"
|
MAC="$GEN_MAC"
|
||||||
echo -e "${DGN}Using MAC Address: ${BGN}$MAC${CL}"
|
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC${CL}"
|
||||||
else
|
else
|
||||||
MAC="$MAC1"
|
MAC="$MAC1"
|
||||||
echo -e "${DGN}Using MAC Address: ${BGN}$MAC1${CL}"
|
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC1${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
@@ -298,10 +336,10 @@ function advanced_settings() {
|
|||||||
if [ -z $VLAN1 ]; then
|
if [ -z $VLAN1 ]; then
|
||||||
VLAN1="Default"
|
VLAN1="Default"
|
||||||
VLAN=""
|
VLAN=""
|
||||||
echo -e "${DGN}Using Vlan: ${BGN}$VLAN1${CL}"
|
echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}$VLAN1${CL}"
|
||||||
else
|
else
|
||||||
VLAN=",tag=$VLAN1"
|
VLAN=",tag=$VLAN1"
|
||||||
echo -e "${DGN}Using Vlan: ${BGN}$VLAN1${CL}"
|
echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}$VLAN1${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
@@ -311,28 +349,28 @@ function advanced_settings() {
|
|||||||
if [ -z $MTU1 ]; then
|
if [ -z $MTU1 ]; then
|
||||||
MTU1="Default"
|
MTU1="Default"
|
||||||
MTU=""
|
MTU=""
|
||||||
echo -e "${DGN}Using Interface MTU Size: ${BGN}$MTU1${CL}"
|
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}"
|
||||||
else
|
else
|
||||||
MTU=",mtu=$MTU1"
|
MTU=",mtu=$MTU1"
|
||||||
echo -e "${DGN}Using Interface MTU Size: ${BGN}$MTU1${CL}"
|
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
exit-script
|
exit-script
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "START VIRTUAL MACHINE" --yesno "Start VM when completed?" 10 58); then
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "START VIRTUAL MACHINE" --yesno "Start VM when completed?" 10 58); then
|
||||||
echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}"
|
echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}yes${CL}"
|
||||||
START_VM="yes"
|
START_VM="yes"
|
||||||
else
|
else
|
||||||
echo -e "${DGN}Start VM when completed: ${BGN}no${CL}"
|
echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}no${CL}"
|
||||||
START_VM="no"
|
START_VM="no"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create a Docker VM?" --no-button Do-Over 10 58); then
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create a Debian 12 VM?" --no-button Do-Over 10 58); then
|
||||||
echo -e "${RD}Creating a Docker VM using the above advanced settings${CL}"
|
echo -e "${CREATING}${BOLD}${DGN}Creating a Debian 12 VM using the above advanced settings${CL}"
|
||||||
else
|
else
|
||||||
header_info
|
header_info
|
||||||
echo -e "${RD}Using Advanced Settings${CL}"
|
echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}"
|
||||||
advanced_settings
|
advanced_settings
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -340,15 +378,14 @@ function advanced_settings() {
|
|||||||
function start_script() {
|
function start_script() {
|
||||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then
|
||||||
header_info
|
header_info
|
||||||
echo -e "${BL}Using Default Settings${CL}"
|
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings${CL}"
|
||||||
default_settings
|
default_settings
|
||||||
else
|
else
|
||||||
header_info
|
header_info
|
||||||
echo -e "${RD}Using Advanced Settings${CL}"
|
echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}"
|
||||||
advanced_settings
|
advanced_settings
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_root
|
check_root
|
||||||
arch_check
|
arch_check
|
||||||
pve_check
|
pve_check
|
||||||
@@ -393,7 +430,7 @@ echo -en "\e[1A\e[0K"
|
|||||||
FILE=$(basename $URL)
|
FILE=$(basename $URL)
|
||||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
|
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
|
||||||
|
|
||||||
STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
|
STORAGE_TYPE=$(pvesm status -storage "$STORAGE" | awk 'NR>1 {print $2}')
|
||||||
case $STORAGE_TYPE in
|
case $STORAGE_TYPE in
|
||||||
nfs | dir)
|
nfs | dir)
|
||||||
DISK_EXT=".qcow2"
|
DISK_EXT=".qcow2"
|
||||||
@@ -430,12 +467,12 @@ msg_ok "Added Docker and Docker Compose Plugin to Debian 12 Qcow2 Disk Image suc
|
|||||||
|
|
||||||
msg_info "Creating a Docker VM"
|
msg_info "Creating a Docker VM"
|
||||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||||
-name $HN -tags community-script,debian12,docker -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||||
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||||
qm set $VMID \
|
qm set $VMID \
|
||||||
-efidisk0 ${DISK0_REF}${FORMAT} \
|
-efidisk0 ${DISK0_REF}${FORMAT} \
|
||||||
-scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=2G \
|
-scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=${DISK_SIZE} \
|
||||||
-boot order=scsi0 \
|
-boot order=scsi0 \
|
||||||
-serial0 socket >/dev/null
|
-serial0 socket >/dev/null
|
||||||
qm resize $VMID scsi0 8G >/dev/null
|
qm resize $VMID scsi0 8G >/dev/null
|
||||||
@@ -473,6 +510,14 @@ EOF
|
|||||||
)
|
)
|
||||||
qm set "$VMID" -description "$DESCRIPTION" >/dev/null
|
qm set "$VMID" -description "$DESCRIPTION" >/dev/null
|
||||||
|
|
||||||
|
if [ -n "$DISK_SIZE" ]; then
|
||||||
|
msg_info "Resizing disk to $DISK_SIZE GB"
|
||||||
|
qm resize $VMID scsi0 ${DISK_SIZE} >/dev/null
|
||||||
|
else
|
||||||
|
msg_info "Using default disk size of $DEFAULT_DISK_SIZE GB"
|
||||||
|
qm resize $VMID scsi0 ${DEFAULT_DISK_SIZE} >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
msg_ok "Created a Docker VM ${CL}${BL}(${HN})"
|
msg_ok "Created a Docker VM ${CL}${BL}(${HN})"
|
||||||
if [ "$START_VM" == "yes" ]; then
|
if [ "$START_VM" == "yes" ]; then
|
||||||
msg_info "Starting Docker VM"
|
msg_info "Starting Docker VM"
|
||||||
|
|||||||
Reference in New Issue
Block a user