diff --git a/ct/configarr.sh b/ct/configarr.sh new file mode 100644 index 000000000..2921f249c --- /dev/null +++ b/ct/configarr.sh @@ -0,0 +1,66 @@ +#!/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: finkerle +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/raydak-labs/configarr + +APP="Configarr" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-12}" +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/configarr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -fsSL https://api.github.com/repos/raydak-labs/configarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/configarr_version.txt)" ]] || [[ ! -f /opt/configarr_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop configarr-task.timer + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + mkdir -p /opt/backup/ + mv /opt/configarr/{config.yml,secrets.yml,.env} "/opt/backup/" + rm -rf /opt/configarr + fetch_and_deploy_gh_release "raydak-labs/configarr" + mv /opt/backup/* /opt/configarr/ + cd /opt/configarr + $STD pnpm install + $STD pnpm run build + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start configarr-task.timer + msg_ok "Started configarr" + + rm -rf /opt/backup + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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 (no web-ui):${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8989${CL}" diff --git a/ct/headers/configarr b/ct/headers/configarr new file mode 100644 index 000000000..cf84ff347 --- /dev/null +++ b/ct/headers/configarr @@ -0,0 +1,6 @@ + ______ _____ + / ____/___ ____ / __(_)___ _____ ___________ + / / / __ \/ __ \/ /_/ / __ `/ __ `/ ___/ ___/ +/ /___/ /_/ / / / / __/ / /_/ / /_/ / / / / +\____/\____/_/ /_/_/ /_/\__, /\__,_/_/ /_/ + /____/ diff --git a/frontend/public/json/configarr.json b/frontend/public/json/configarr.json new file mode 100644 index 000000000..70461420b --- /dev/null +++ b/frontend/public/json/configarr.json @@ -0,0 +1,40 @@ +{ + "name": "Configarr", + "slug": "configarr", + "categories": [ + 14 + ], + "date_created": "2025-05-06", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8989, + "documentation": "https://configarr.raydak.de/docs/intro", + "config_path": "/opt/configarr/config.yml", + "website": "https://configarr.raydak.de/", + "logo": "https://github.com/raydak-labs/configarr/blob/main/docs/static/img/logo.webp", + "description": "Configarr is an open-source tool designed to simplify configuration and synchronization for Sonarr and Radarr (and other experimental). It integrates with TRaSH Guides to automate updates of custom formats, quality profiles, and other settings, while also supporting user-defined configurations.", + "install_methods": [ + { + "type": "default", + "script": "ct/configarr.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "change secrets file /opt/configarr/secrets.yml", + "type": "info" + } + ] +} diff --git a/install/configarr-install.sh b/install/configarr-install.sh new file mode 100644 index 000000000..c04693806 --- /dev/null +++ b/install/configarr-install.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: finkerle +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/raydak-labs/configarr + +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 \ + git +msg_ok "Installed Dependencies" + +NODE_MODULE="pnpm@latest" install_node_and_modules +fetch_and_deploy_gh_release "raydak-labs/configarr" + +msg_info "Setup ${APPLICATION}" +cat </opt/configarr/.env +ROOT_PATH=/opt/configarr +CUSTOM_REPO_ROOT=/opt/configarr/repos +CONFIG_LOCATION=/opt/configarr/config.yml +SECRETS_LOCATION=/opt/configarr/secrets.yml +EOF +mv /opt/configarr/secrets.yml.template /opt/configarr/secrets.yml +sed 's|#localConfigTemplatesPath: /app/templates|#localConfigTemplatesPath: /opt/configarr/templates|' /opt/configarr/config.yml.template >/opt/configarr/config.yml +cd /opt/configarr +$STD pnpm install +$STD pnpm run build +msg_ok "Setup ${APPLICATION}" + +msg_info "Creating Service" +cat </etc/systemd/system/configarr-task.service +[Unit] +Description=Run Configarr Task + +[Service] +Type=oneshot +WorkingDirectory=/opt/configarr +ExecStart=/usr/bin/node /opt/configarr/bundle.cjs +EOF + +cat </etc/systemd/system/configarr-task.timer +[Unit] +Description=Run Configarr every 5 minutes + +[Timer] +OnBootSec=2min +OnUnitActiveSec=5min +Persistent=true + +[Install] +WantedBy=timers.target +EOF +systemctl enable -q --now configarr-task.timer configarr-task.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned"