mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 18:32:51 +00:00
Compare commits
27 Commits
2025-05-03
...
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 |
34
CHANGELOG.md
34
CHANGELOG.md
@@ -14,6 +14,40 @@ 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
|
## 2025-05-03
|
||||||
|
|
||||||
### 🚀 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 @@
|
|||||||
|
___ __ _ __ __ __
|
||||||
|
/ | / /___ (_)___ ___ / //_/___ ____ ___ ____ ____/ /___
|
||||||
|
/ /| | / / __ \/ / __ \/ _ \______/ ,< / __ \/ __ `__ \/ __ \/ __ / __ \
|
||||||
|
/ ___ |/ / /_/ / / / / / __/_____/ /| / /_/ / / / / / / /_/ / /_/ / /_/ /
|
||||||
|
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_\____/_/ /_/ /_/\____/\__,_/\____/
|
||||||
|
/_/
|
||||||
40
ct/komodo.sh
40
ct/komodo.sh
@@ -23,39 +23,33 @@ 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
|
|
||||||
|
|
||||||
|
[[ -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
|
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||||
msg_error "No valid compose file found in /opt/komodo!"
|
msg_error "No valid compose file found in /opt/komodo!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||||
BACKUP_FILE="${COMPOSE_FILE}.bak_$(date +%Y%m%d_%H%M%S)"
|
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||||
mv "/opt/komodo/$COMPOSE_FILE" "/opt/komodo/$BACKUP_FILE" || {
|
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||||
msg_error "Failed to create backup of $COMPOSE_FILE!"
|
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
|
||||||
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_FILE}"
|
if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
|
||||||
if ! curl -fsSL "$GITHUB_URL" -o "/opt/komodo/${COMPOSE_FILE}"; then
|
msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
|
||||||
msg_error "Failed to download ${COMPOSE_FILE} from GitHub!"
|
mv "$BACKUP_FILE" "$COMPOSE_FILE"
|
||||||
mv "/opt/komodo/${BACKUP_FILE}" "/opt/komodo/${COMPOSE_FILE}"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||||
$STD docker compose -p komodo -f "/opt/komodo/$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
|
||||||
msg_ok "Updated ${APP}"
|
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}"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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": {
|
||||||
|
|||||||
@@ -1,4 +1,164 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.2.3",
|
||||||
|
"date": "2025-05-05T11:12:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "grokability/snipe-it",
|
||||||
|
"version": "v8.1.2",
|
||||||
|
"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",
|
||||||
|
"version": "v0.22.1865",
|
||||||
|
"date": "2025-05-05T05:54:54Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
|
"version": "4.8.11.0",
|
||||||
|
"date": "2025-03-10T06:39:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firefly-iii/firefly-iii",
|
||||||
|
"version": "v6.2.12",
|
||||||
|
"date": "2025-04-20T19:22:17Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moghtech/komodo",
|
||||||
|
"version": "v1.17.5",
|
||||||
|
"date": "2025-05-04T22:17:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "YunoHost/yunohost",
|
||||||
|
"version": "debian/12.0.16",
|
||||||
|
"date": "2025-05-04T22:06:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "juanfont/headscale",
|
||||||
|
"version": "v0.25.1",
|
||||||
|
"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",
|
||||||
|
"version": "2025.4.4",
|
||||||
|
"date": "2025-04-25T07:47:57Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bastienwirtz/homer",
|
||||||
|
"version": "v25.05.1",
|
||||||
|
"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",
|
"name": "blakeblackshear/frigate",
|
||||||
"version": "v0.14.1",
|
"version": "v0.14.1",
|
||||||
@@ -9,16 +169,6 @@
|
|||||||
"version": "2.33.0",
|
"version": "2.33.0",
|
||||||
"date": "2025-05-03T10:33:49Z"
|
"date": "2025-05-03T10:33:49Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.22.1857",
|
|
||||||
"date": "2025-05-03T05:54:00Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "theonedev/onedev",
|
|
||||||
"version": "v11.9.1",
|
|
||||||
"date": "2025-05-03T02:48:33Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Brandawg93/PeaNUT",
|
"name": "Brandawg93/PeaNUT",
|
||||||
"version": "v5.7.4",
|
"version": "v5.7.4",
|
||||||
@@ -59,11 +209,6 @@
|
|||||||
"version": "v0.9.80",
|
"version": "v0.9.80",
|
||||||
"date": "2025-05-02T16:48:15Z"
|
"date": "2025-05-02T16:48:15Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.2.2",
|
|
||||||
"date": "2025-04-30T06:14:22Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "prometheus-pve/prometheus-pve-exporter",
|
"name": "prometheus-pve/prometheus-pve-exporter",
|
||||||
"version": "v3.5.4",
|
"version": "v3.5.4",
|
||||||
@@ -99,11 +244,6 @@
|
|||||||
"version": "e5.9.0",
|
"version": "e5.9.0",
|
||||||
"date": "2025-05-02T11:07:10Z"
|
"date": "2025-05-02T11:07:10Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "semaphoreui/semaphore",
|
|
||||||
"version": "v2.14.7",
|
|
||||||
"date": "2025-05-02T07:57:33Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "apache/couchdb",
|
"name": "apache/couchdb",
|
||||||
"version": "3.5.0-RC1",
|
"version": "3.5.0-RC1",
|
||||||
@@ -114,11 +254,6 @@
|
|||||||
"version": "v2.0.0-rc.14",
|
"version": "v2.0.0-rc.14",
|
||||||
"date": "2025-05-01T23:50:42Z"
|
"date": "2025-05-01T23:50:42Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "home-assistant/core",
|
|
||||||
"version": "2025.4.4",
|
|
||||||
"date": "2025-04-25T07:47:57Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "stackblitz-labs/bolt.diy",
|
"name": "stackblitz-labs/bolt.diy",
|
||||||
"version": "v0.0.7-hf1",
|
"version": "v0.0.7-hf1",
|
||||||
@@ -134,15 +269,10 @@
|
|||||||
"version": "v4.3.0",
|
"version": "v4.3.0",
|
||||||
"date": "2025-05-01T16:46:17Z"
|
"date": "2025-05-01T16:46:17Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "runtipi/runtipi",
|
|
||||||
"version": "v4.0.2",
|
|
||||||
"date": "2025-05-01T16:10:58Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "fallenbagel/jellyseerr",
|
"name": "fallenbagel/jellyseerr",
|
||||||
"version": "preview-typeorm-fix",
|
"version": "preview-plex-home-profile",
|
||||||
"date": "2025-05-01T14:47:45Z"
|
"date": "2025-05-01T14:59:46Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "n8n-io/n8n",
|
"name": "n8n-io/n8n",
|
||||||
@@ -154,11 +284,6 @@
|
|||||||
"version": "v4.3.0",
|
"version": "v4.3.0",
|
||||||
"date": "2025-05-01T04:13:41Z"
|
"date": "2025-05-01T04:13:41Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "ollama/ollama",
|
|
||||||
"version": "v0.6.7-rc2",
|
|
||||||
"date": "2025-04-30T20:57:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "HabitRPG/habitica",
|
"name": "HabitRPG/habitica",
|
||||||
"version": "v5.36.1",
|
"version": "v5.36.1",
|
||||||
@@ -169,11 +294,6 @@
|
|||||||
"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",
|
||||||
@@ -214,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",
|
||||||
@@ -229,11 +344,6 @@
|
|||||||
"version": "coverity-w18-4.12.0",
|
"version": "coverity-w18-4.12.0",
|
||||||
"date": "2025-04-30T09:30:26Z"
|
"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",
|
||||||
"version": "v0.46.0",
|
"version": "v0.46.0",
|
||||||
@@ -244,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",
|
||||||
@@ -259,21 +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": "MediaBrowser/Emby.Releases",
|
|
||||||
"version": "4.8.11.0",
|
|
||||||
"date": "2025-03-10T06:39:11Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "hargata/lubelog",
|
"name": "hargata/lubelog",
|
||||||
"version": "v1.4.7",
|
"version": "v1.4.7",
|
||||||
@@ -319,21 +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": "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",
|
||||||
@@ -344,26 +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": "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",
|
||||||
@@ -374,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",
|
||||||
@@ -419,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",
|
||||||
@@ -434,11 +494,6 @@
|
|||||||
"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",
|
||||||
@@ -529,21 +584,11 @@
|
|||||||
"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",
|
||||||
@@ -559,16 +604,6 @@
|
|||||||
"version": "v1.0.4",
|
"version": "v1.0.4",
|
||||||
"date": "2025-04-18T16:08:02Z"
|
"date": "2025-04-18T16:08:02Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"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",
|
||||||
@@ -614,11 +649,6 @@
|
|||||||
"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",
|
||||||
@@ -664,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",
|
||||||
@@ -719,21 +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": "Athou/commafeed",
|
"name": "Athou/commafeed",
|
||||||
"version": "5.7.0",
|
"version": "5.7.0",
|
||||||
@@ -889,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",
|
||||||
@@ -974,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",
|
||||||
@@ -1079,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",
|
||||||
|
|||||||
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,29 +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\"}'"
|
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 "/C=US/O=Vaultwarden/O
|
$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"
|
||||||
U=Domain Control Validated/CN=localhost"
|
|
||||||
chown vaultwarden:vaultwarden /etc/ssl/certs/vaultwarden-selfsigned.crt
|
chown vaultwarden:vaultwarden /etc/ssl/certs/vaultwarden-selfsigned.crt
|
||||||
chown vaultwarden:vaultwarden /etc/ssl/private/vaultwarden-selfsigned.key
|
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
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
install_node_and_modules() {
|
install_node_and_modules() {
|
||||||
local NODE_VERSION="${NODE_VERSION:-22}"
|
local NODE_VERSION="${NODE_VERSION:-22}"
|
||||||
local NODE_MODULE="${NODE_MODULE:-}"
|
local NODE_MODULE="${NODE_MODULE:-}"
|
||||||
@@ -47,7 +48,7 @@ install_node_and_modules() {
|
|||||||
msg_ok "Installed Node.js ${NODE_VERSION}"
|
msg_ok "Installed Node.js ${NODE_VERSION}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
|
|
||||||
# Install global Node modules
|
# Install global Node modules
|
||||||
if [[ -n "$NODE_MODULE" ]]; then
|
if [[ -n "$NODE_MODULE" ]]; then
|
||||||
@@ -345,7 +346,7 @@ install_go() {
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
# Determine version
|
# Determine version
|
||||||
if [[ -z "$GO_VERSION" || "$GO_VERSION" == "latest" ]]; then
|
if [[ -z "${GO_VERSION:-}" || "${GO_VERSION}" == "latest" ]]; then
|
||||||
GO_VERSION=$(curl -fsSL https://go.dev/VERSION?m=text | head -n1 | sed 's/^go//')
|
GO_VERSION=$(curl -fsSL https://go.dev/VERSION?m=text | head -n1 | sed 's/^go//')
|
||||||
if [[ -z "$GO_VERSION" ]]; then
|
if [[ -z "$GO_VERSION" ]]; then
|
||||||
msg_error "Could not determine latest Go version"
|
msg_error "Could not determine latest Go version"
|
||||||
@@ -389,7 +390,7 @@ install_go() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_java() {
|
install_java() {
|
||||||
local JAVA_VERSION="${JAVA_VERSION:-17}"
|
local JAVA_VERSION="${JAVA_VERSION:-21}"
|
||||||
local DISTRO_CODENAME
|
local DISTRO_CODENAME
|
||||||
DISTRO_CODENAME=$(awk -F= '/VERSION_CODENAME/ { print $2 }' /etc/os-release)
|
DISTRO_CODENAME=$(awk -F= '/VERSION_CODENAME/ { print $2 }' /etc/os-release)
|
||||||
local DESIRED_PACKAGE="temurin-${JAVA_VERSION}-jdk"
|
local DESIRED_PACKAGE="temurin-${JAVA_VERSION}-jdk"
|
||||||
@@ -658,8 +659,8 @@ setup_local_ip_helper() {
|
|||||||
|
|
||||||
# Install networkd-dispatcher if not present
|
# Install networkd-dispatcher if not present
|
||||||
if ! dpkg -s networkd-dispatcher >/dev/null 2>&1; then
|
if ! dpkg -s networkd-dispatcher >/dev/null 2>&1; then
|
||||||
$STD apt-get update -qq
|
apt-get update -qq
|
||||||
$STD apt-get install -yq networkd-dispatcher
|
apt-get install -yq networkd-dispatcher
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Write update_local_ip.sh
|
# Write update_local_ip.sh
|
||||||
@@ -757,6 +758,34 @@ import_local_ip() {
|
|||||||
export LOCAL_IP
|
export LOCAL_IP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function download_with_progress() {
|
||||||
|
local url="$1"
|
||||||
|
local output="$2"
|
||||||
|
if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi
|
||||||
|
|
||||||
|
if ! command -v pv &>/dev/null; then
|
||||||
|
$STD apt-get install -y pv
|
||||||
|
fi
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# Content-Length aus HTTP-Header holen
|
||||||
|
local content_length
|
||||||
|
content_length=$(curl -fsSLI "$url" | awk '/Content-Length/ {print $2}' | tr -d '\r' || true)
|
||||||
|
|
||||||
|
if [[ -z "$content_length" ]]; then
|
||||||
|
#msg_warn "Content-Length not available, falling back to plain download"
|
||||||
|
if ! curl -fL# -o "$output" "$url"; then
|
||||||
|
msg_error "Download failed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ! curl -fsSL "$url" | pv -s "$content_length" >"$output"; then
|
||||||
|
msg_error "Download failed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function setup_uv() {
|
function setup_uv() {
|
||||||
$STD msg_info "Checking uv installation..."
|
$STD msg_info "Checking uv installation..."
|
||||||
UV_BIN="/usr/local/bin/uv"
|
UV_BIN="/usr/local/bin/uv"
|
||||||
@@ -818,3 +847,57 @@ function ensure_usr_local_bin_persist() {
|
|||||||
chmod +x "$PROFILE_FILE"
|
chmod +x "$PROFILE_FILE"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setup_gs() {
|
||||||
|
msg_info "Setup Ghostscript"
|
||||||
|
mkdir -p /tmp
|
||||||
|
TMP_DIR=$(mktemp -d)
|
||||||
|
CURRENT_VERSION=$(gs --version 2>/dev/null || echo "0")
|
||||||
|
|
||||||
|
RELEASE_JSON=$(curl -fsSL https://api.github.com/repos/ArtifexSoftware/ghostpdl-downloads/releases/latest)
|
||||||
|
LATEST_VERSION=$(echo "$RELEASE_JSON" | grep '"tag_name":' | head -n1 | cut -d '"' -f4 | sed 's/^gs//')
|
||||||
|
LATEST_VERSION_DOTTED=$(echo "$RELEASE_JSON" | grep '"name":' | head -n1 | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
|
||||||
|
|
||||||
|
if [[ -z "$LATEST_VERSION" ]]; then
|
||||||
|
msg_error "Could not determine latest Ghostscript version from GitHub."
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if dpkg --compare-versions "$CURRENT_VERSION" ge "$LATEST_VERSION_DOTTED"; then
|
||||||
|
msg_ok "Ghostscript is already at version $CURRENT_VERSION"
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Installing/Updating Ghostscript to $LATEST_VERSION_DOTTED"
|
||||||
|
curl -fsSL "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${LATEST_VERSION}/ghostscript-${LATEST_VERSION_DOTTED}.tar.gz" -o "$TMP_DIR/ghostscript.tar.gz"
|
||||||
|
|
||||||
|
if ! tar -xzf "$TMP_DIR/ghostscript.tar.gz" -C "$TMP_DIR"; then
|
||||||
|
msg_error "Failed to extract Ghostscript archive."
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$TMP_DIR/ghostscript-${LATEST_VERSION_DOTTED}" || {
|
||||||
|
msg_error "Failed to enter Ghostscript source directory."
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
}
|
||||||
|
$STD apt-get install -y build-essential libpng-dev zlib1g-dev
|
||||||
|
./configure >/dev/null && make && sudo make install >/dev/null
|
||||||
|
local EXIT_CODE=$?
|
||||||
|
hash -r
|
||||||
|
if [[ ! -x "$(command -v gs)" ]]; then
|
||||||
|
if [[ -x /usr/local/bin/gs ]]; then
|
||||||
|
ln -sf /usr/local/bin/gs /usr/bin/gs
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
|
||||||
|
if [[ $EXIT_CODE -eq 0 ]]; then
|
||||||
|
msg_ok "Ghostscript installed/updated to version $LATEST_VERSION_DOTTED"
|
||||||
|
else
|
||||||
|
msg_error "Ghostscript installation failed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -42,7 +42,7 @@ function error_exit() {
|
|||||||
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
|
||||||
@@ -84,18 +84,18 @@ VERSION=$(curl -fsSL https://api.github.com/repos/coder/code-server/releases/lat
|
|||||||
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.
|
||||||
173
vm/docker-vm.sh
173
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,13 +134,12 @@ 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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function ssh_check() {
|
function ssh_check() {
|
||||||
@@ -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