From 40874075c824c8638ee1af6d142cdabd8f2b6d39 Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 08:03:10 +0000 Subject: [PATCH] 'Add new script' --- ct/openproject.sh | 44 ++++++++++++ frontend/public/json/openproject.json | 34 ++++++++++ install/openproject-install.sh | 98 +++++++++++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 ct/openproject.sh create mode 100644 frontend/public/json/openproject.json create mode 100644 install/openproject-install.sh diff --git a/ct/openproject.sh b/ct/openproject.sh new file mode 100644 index 000000000..31e7b42bc --- /dev/null +++ b/ct/openproject.sh @@ -0,0 +1,44 @@ +#!/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: michelroegl-brunner +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/opf/openproject + +APP="OpenProject" +var_tags="${var_tags:-project-management,erp}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-8}" +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 [[ ! -f /etc/openproject/installer.dat ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + $STD apt-get update + $STD apt-get install --only-upgrade -y openproject + msg_ok "Updated ${APP}" + exit 0 +} + +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}/openproject${CL}" diff --git a/frontend/public/json/openproject.json b/frontend/public/json/openproject.json new file mode 100644 index 000000000..b697b134e --- /dev/null +++ b/frontend/public/json/openproject.json @@ -0,0 +1,34 @@ +{ + "name": "OpenProject", + "slug": "openproject", + "categories": [ + 25 + ], + "date_created": "2025-04-03", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://www.openproject.org", + "website": "https://www.openproject.org", + "logo": "https://raw.githubusercontent.com/opf/openproject/dev/docker/prod/logo.png", + "description": "OpenProject is a web-based project management software. Use OpenProject to manage your projects, tasks and goals. Collaborate via work packages and link them to your pull requests on Github. Read more about the OpenProject GitHub integration.", + "install_methods": [ + { + "type": "default", + "script": "ct/openproject.sh", + "resources": { + "cpu": 2, + "ram": 4096, + "hdd": 8, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "admin", + "password": "admin" + }, + "notes": [] +} diff --git a/install/openproject-install.sh b/install/openproject-install.sh new file mode 100644 index 000000000..de1bb15fc --- /dev/null +++ b/install/openproject-install.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://github.com/opf/openproject + +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 \ + apt-transport-https \ + ca-certificates \ + gpg +msg_ok "Installed Dependencies" + +msg_info "Setup OpenProject Repository" +wget -qO- https://dl.packager.io/srv/opf/openproject/key | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg +wget -qO /etc/apt/sources.list.d/openproject.list https://dl.packager.io/srv/opf/openproject/stable/15/installer/debian/12.repo +msg_ok "Setup OpenProject Repository" + +msg_info "Setup PostgreSQL Repository" +VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)" +echo "deb http://apt.postgresql.org/pub/repos/apt ${VERSION}-pgdg main" >/etc/apt/sources.list.d/pgdg.list +curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor --output /etc/apt/trusted.gpg.d/postgresql.gpg +msg_ok "Setup PostgreSQL Repository" + +msg_info "Installing PostgreSQL" +$STD apt-get update +$STD apt-get install -y postgresql +msg_ok "Installed PostgreSQL" + +msg_info "Setting up PostgreSQL" +DB_NAME=openproject +DB_USER=openproject +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +API_KEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;" +{ + echo "OpenProject-Credentials" + echo -e "OpenProject Database User: $DB_USER" + echo -e "OpenProject Database Password: $DB_PASS" + echo -e "OpenProject Database Name: $DB_NAME" + echo -e "OpenProject API Key: $API_KEY" +} >>~/openproject.creds +msg_ok "Set up PostgreSQL" + +msg_info "Installing OpenProject" +$STD apt-get install -y openproject +msg_ok "Installed OpenProject" + +msg_info "Configure OpenProject" +IP_ADDR=$(hostname -I | cut -d' ' -f1) +cat </etc/openproject/installer.dat +openproject/edition default + +postgres/retry retry +postgres/autoinstall reuse +postgres/db_host 127.0.0.1 +postgres/db_port 5432 +postgres/db_username ${DB_USER} +postgres/db_password ${DB_PASS} +postgres/db_name ${DB_NAME} +server/autoinstall install +server/variant apache2 + +server/hostname ${IP_ADDR} +server/server_path_prefix /openproject +server/ssl no +server/variant apache2 +server/server_path_prefix +repositories/api-key ${API_KEY} +repositories/svn-install skip +repositories/git-install install +repositories/git-path /var/db/openproject/git +repositories/git-http-backend /usr/lib/git-core/git-http-backend/ +memcached/autoinstall install +openproject/admin_email admin@example.net +openproject/default_language en +EOF + +$STD sudo openproject configure +msg_ok "Configured OpenProject" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned"