From 99e06341b30305c00e892fc792965a14f7f9319e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 22:55:11 +0100 Subject: [PATCH] New Script: Komodo (#1167) * Happy new Year! Update Copyright to 2025 * Create new LXC: Komodo --- ct/komodo.sh | 73 ++++++++++++++++++++++++++++++ install/komodo-install.sh | 95 +++++++++++++++++++++++++++++++++++++++ json/komodo.json | 39 ++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 ct/komodo.sh create mode 100644 install/komodo-install.sh create mode 100644 json/komodo.json diff --git a/ct/komodo.sh b/ct/komodo.sh new file mode 100644 index 00000000..2a550892 --- /dev/null +++ b/ct/komodo.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://komo.do + +# App Default Values +APP="Komodo" +var_tags="docker" +var_cpu="2" +var_ram="2048" +var_disk="10" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + 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 *.compose.yaml; do + if [[ "$file" != "compose.env" ]]; then + COMPOSE_FILE="$file" + break + fi + done + + if [[ -z "$COMPOSE_FILE" ]]; then + msg_error "No valid compose file found in /opt/komodo!" + exit 1 + fi + + BACKUP_FILE="${COMPOSE_FILE}.bak_$(date +%Y%m%d_%H%M%S)" + mv "$COMPOSE_FILE" "$BACKUP_FILE" || { + msg_error "Failed to create backup of $COMPOSE_FILE!" + exit 1 + } + + GITHUB_URL="https://raw.githubusercontent.com/mbecker20/komodo/main/compose/$COMPOSE_FILE" + wget -q -O "$COMPOSE_FILE" "$GITHUB_URL" || { + msg_error "Failed to download $COMPOSE_FILE from GitHub!" + mv "$BACKUP_FILE" "$COMPOSE_FILE" + exit 1 + } + + docker compose -p komodo -f "/opt/komodo/$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d &>/dev/null + msg_ok "Updated ${APP}" +} + +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/install/komodo-install.sh b/install/komodo-install.sh new file mode 100644 index 00000000..9650a4d3 --- /dev/null +++ b/install/komodo-install.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk +# 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 apt-get install -y \ + curl \ + sudo \ + mc \ + ca-certificates +msg_ok "Installed Dependencies" + +msg_info "Setup Docker Repository" +install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc +chmod a+r /etc/apt/keyrings/docker.asc +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +$STD apt-get update +msg_ok "Setup Docker Repository" + +msg_info "Installing Docker" +$STD apt-get install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin +msg_ok "Installed Docker" + +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 +wget -q "https://raw.githubusercontent.com/mbecker20/komodo/main/compose/$DB_COMPOSE_FILE" + + +msg_info "Setup Komodo Environment" +wget -q -O /opt/komodo/compose.env https://raw.githubusercontent.com/mbecker20/komodo/main/compose/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/^DB_USERNAME=.*/DB_USERNAME=komodo_admin/" /opt/komodo/compose.env +sed -i "s/^DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/" /opt/komodo/compose.env +sed -i "s/^PASSKEY=.*/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 apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/komodo.json b/json/komodo.json new file mode 100644 index 00000000..d27b09aa --- /dev/null +++ b/json/komodo.json @@ -0,0 +1,39 @@ +{ + "name": "Komodo", + "slug": "komodo", + "categories": [ + 8 + ], + "date_created": "2025-01-01", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9120, + "documentation": "https://komo.do/docs/intro", + "website": "https://komo.do", + "logo": "https://komo.do/img/logo512.png", + "description": "Komodo is a build and deployment system that automates the creation of versioned Docker images from Git repositories and facilitates the deployment of Docker containers and Docker Compose setups. It provides features such as build automation triggered by Git pushes, deployment management, and monitoring of uptime and logs across multiple servers. The core API and associated agent are developed in Rust.", + "install_methods": [ + { + "type": "default", + "script": "ct/komodo.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 10, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "After the initial installation: Enter your desired admin user and password and then click on Sign Up", + "type": "info" + } + ] +} \ No newline at end of file