diff --git a/ct/headers/maintainerr b/ct/headers/maintainerr new file mode 100644 index 000000000..b761e5636 --- /dev/null +++ b/ct/headers/maintainerr @@ -0,0 +1,6 @@ + __ ___ _ __ _ + / |/ /___ _(_)___ / /_____ _(_)___ ___ __________ + / /|_/ / __ `/ / __ \/ __/ __ `/ / __ \/ _ \/ ___/ ___/ + / / / / /_/ / / / / / /_/ /_/ / / / / / __/ / / / +/_/ /_/\__,_/_/_/ /_/\__/\__,_/_/_/ /_/\___/_/ /_/ + diff --git a/ct/maintainerr.sh b/ct/maintainerr.sh new file mode 100644 index 000000000..ea285c6d6 --- /dev/null +++ b/ct/maintainerr.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Karolis Stanelis +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Maintainerr/Maintainerr + +APP="Maintainerr" +var_tags="${var_tags:-media;arr;cleanup}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-8192}" +var_disk="${var_disk:-24}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/maintainerr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "maintainerr" "Maintainerr/Maintainerr"; then + msg_info "Stopping Service" + systemctl stop maintainerr + msg_ok "Stopped Service" + + create_backup /opt/data /opt/maintainerr/.env + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr" + + msg_info "Rebuilding Maintainerr (Patience)" + cd /opt/maintainerr + export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 + export NODE_OPTIONS="--max-old-space-size=4096" + $STD corepack enable + $STD corepack prepare yarn@4.11.0 --activate + $STD yarn config set enableTelemetry 0 + $STD yarn install --network-timeout 300000 + $STD yarn turbo build --concurrency=1 + cp -r apps/ui/dist apps/server/dist/ui + cp -r apps/server/assets apps/server/dist/assets + find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g" + $STD yarn workspaces focus --all --production + rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui + $STD apt autoremove -y + msg_ok "Rebuilt Maintainerr" + + restore_backup + sed -i '/^npm_package_version=/d;/^VERSION_TAG=/d' /opt/maintainerr/.env + { + echo "VERSION_TAG=stable" + echo "npm_package_version=$(cat ~/.maintainerr)" + } >>/opt/maintainerr/.env + + msg_info "Starting Service" + systemctl start maintainerr + msg_ok "Started Service" + msg_ok "Updated Successfully!" + fi + 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}:6246${CL}" diff --git a/install/maintainerr-install.sh b/install/maintainerr-install.sh new file mode 100644 index 000000000..2900ab184 --- /dev/null +++ b/install/maintainerr-install.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Karolis Stanelis +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Maintainerr/Maintainerr + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y \ + build-essential \ + pkg-config \ + libcairo2-dev \ + libpango1.0-dev \ + libjpeg-dev \ + libgif-dev \ + libpixman-1-dev \ + librsvg2-dev +msg_ok "Installed Dependencies" + +NODE_VERSION="24" setup_nodejs + +fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr" + +msg_info "Building Maintainerr (Patience)" +cd /opt/maintainerr +export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 +export NODE_OPTIONS="--max-old-space-size=4096" +$STD corepack enable +$STD corepack prepare yarn@4.11.0 --activate +$STD yarn config set enableTelemetry 0 +$STD yarn install --network-timeout 300000 +$STD yarn turbo build --concurrency=1 +cp -r apps/ui/dist apps/server/dist/ui +cp -r apps/server/assets apps/server/dist/assets +find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g" +msg_ok "Built Maintainerr" + +msg_info "Reclaiming Disk Space" +$STD yarn workspaces focus --all --production +rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui +$STD apt autoremove -y +msg_ok "Reclaimed Disk Space" + +msg_info "Configuring Environment" +mkdir -p /opt/data/logs +ln -sfn /opt/maintainerr /opt/app +cat </opt/maintainerr/.env +NODE_ENV=production +DATA_DIR=/opt/data +UI_PORT=6246 +UI_HOSTNAME=0.0.0.0 +BASE_PATH= +VERSION_TAG=stable +npm_package_version=$(cat ~/.maintainerr) +EOF +msg_ok "Configured Environment" + +msg_info "Creating Service" +cat </etc/systemd/system/maintainerr.service +[Unit] +Description=Maintainerr +After=network.target + +[Service] +Type=simple +WorkingDirectory=/opt/maintainerr/apps/server +EnvironmentFile=/opt/maintainerr/.env +ExecStart=/usr/bin/node dist/main +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now maintainerr +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc