From eaebc184b19815a5002f691a9313b6ac8ed872e1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 5 May 2025 15:33:24 +0200 Subject: [PATCH] New Script: Alpine-Komodo (#4234) --- ct/alpine-komodo.sh | 58 +++++++++++++++++++++++ frontend/public/json/komodo.json | 11 +++++ install/alpine-komodo-install.sh | 79 ++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 ct/alpine-komodo.sh create mode 100644 install/alpine-komodo-install.sh diff --git a/ct/alpine-komodo.sh b/ct/alpine-komodo.sh new file mode 100644 index 000000000..68e96cb3e --- /dev/null +++ b/ct/alpine-komodo.sh @@ -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}" diff --git a/frontend/public/json/komodo.json b/frontend/public/json/komodo.json index 85219ea74..03f1956d3 100644 --- a/frontend/public/json/komodo.json +++ b/frontend/public/json/komodo.json @@ -25,6 +25,17 @@ "os": "debian", "version": "12" } + }, + { + "type": "alpine", + "script": "ct/alpine-komodo.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 10, + "os": "alpine", + "version": "3.21" + } } ], "default_credentials": { diff --git a/install/alpine-komodo-install.sh b/install/alpine-komodo-install.sh new file mode 100644 index 000000000..b9681f3de --- /dev/null +++ b/install/alpine-komodo-install.sh @@ -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"