mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	
		
			
	
	
		
			158 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			158 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/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://tomcat.apache.org/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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 \
							 | 
						||
| 
								 | 
							
								    gnupg2 \
							 | 
						||
| 
								 | 
							
								    lsb-release \
							 | 
						||
| 
								 | 
							
								    gpg \
							 | 
						||
| 
								 | 
							
								    apt-transport-https
							 | 
						||
| 
								 | 
							
								msg_ok "Installed Dependencies"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								msg_info "Setting up Adoptium Repository"
							 | 
						||
| 
								 | 
							
								mkdir -p /etc/apt/keyrings
							 | 
						||
| 
								 | 
							
								wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
							 | 
						||
| 
								 | 
							
								echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
							 | 
						||
| 
								 | 
							
								$STD apt-get update
							 | 
						||
| 
								 | 
							
								msg_ok "Set up Adoptium Repository"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								read -r -p "Which Tomcat version would you like to install? (9, 10.1, 11): " version
							 | 
						||
| 
								 | 
							
								case $version in
							 | 
						||
| 
								 | 
							
								9)
							 | 
						||
| 
								 | 
							
								    TOMCAT_VERSION="9"
							 | 
						||
| 
								 | 
							
								    echo "Which LTS Java version would you like to use? (8, 11, 17, 21): "
							 | 
						||
| 
								 | 
							
								    read -r jdk_version
							 | 
						||
| 
								 | 
							
								    case $jdk_version in
							 | 
						||
| 
								 | 
							
								    8)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 8 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -y temurin-8-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 8 (LTS)"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    11)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 11 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -y temurin-11-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 11 (LTS)"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    17)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -qqy temurin-17-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 17 (LTS)"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    21)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -y temurin-21-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 21 (LTS)"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    *)
							 | 
						||
| 
								 | 
							
								        msg_error "Invalid JDK version selected. Please enter 8, 11, 17 or 21."
							 | 
						||
| 
								 | 
							
								        exit 1
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    esac
							 | 
						||
| 
								 | 
							
								    ;;
							 | 
						||
| 
								 | 
							
								10 | 10.1)
							 | 
						||
| 
								 | 
							
								    TOMCAT_VERSION="10"
							 | 
						||
| 
								 | 
							
								    echo "Which LTS Java version would you like to use? (11, 17): "
							 | 
						||
| 
								 | 
							
								    read -r jdk_version
							 | 
						||
| 
								 | 
							
								    case $jdk_version in
							 | 
						||
| 
								 | 
							
								    11)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 11 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -y temurin-11-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 11"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    17)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -y temurin-17-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 17"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    21)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -y temurin-21-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 21 (LTS)"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    *)
							 | 
						||
| 
								 | 
							
								        msg_error "Invalid JDK version selected. Please enter 11 or 17."
							 | 
						||
| 
								 | 
							
								        exit 1
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    esac
							 | 
						||
| 
								 | 
							
								    ;;
							 | 
						||
| 
								 | 
							
								11)
							 | 
						||
| 
								 | 
							
								    TOMCAT_VERSION="11"
							 | 
						||
| 
								 | 
							
								    echo "Which LTS Java version would you like to use? (17, 21): "
							 | 
						||
| 
								 | 
							
								    read -r jdk_version
							 | 
						||
| 
								 | 
							
								    case $jdk_version in
							 | 
						||
| 
								 | 
							
								    17)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -qqy temurin-17-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 17"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    21)
							 | 
						||
| 
								 | 
							
								        msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								        $STD apt-get install -y temurin-21-jdk
							 | 
						||
| 
								 | 
							
								        msg_ok "Setup Temurin JDK 21 (LTS)"
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    *)
							 | 
						||
| 
								 | 
							
								        msg_error "Invalid JDK version selected. Please enter 17 or 21."
							 | 
						||
| 
								 | 
							
								        exit 1
							 | 
						||
| 
								 | 
							
								        ;;
							 | 
						||
| 
								 | 
							
								    esac
							 | 
						||
| 
								 | 
							
								    ;;
							 | 
						||
| 
								 | 
							
								*)
							 | 
						||
| 
								 | 
							
								    msg_error "Invalid Tomcat version selected. Please enter 9, 10.1 or 11."
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								    ;;
							 | 
						||
| 
								 | 
							
								esac
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								msg_info "Installing Tomcat $TOMCAT_VERSION"
							 | 
						||
| 
								 | 
							
								LATEST_VERSION=$(curl -s "https://dlcdn.apache.org/tomcat/tomcat-$TOMCAT_VERSION/" | grep -oP 'v[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?/' | sort -V | tail -n 1 | sed 's/\/$//; s/v//')
							 | 
						||
| 
								 | 
							
								TOMCAT_URL="https://dlcdn.apache.org/tomcat/tomcat-$TOMCAT_VERSION/v$LATEST_VERSION/bin/apache-tomcat-$LATEST_VERSION.tar.gz"
							 | 
						||
| 
								 | 
							
								wget -qO /tmp/tomcat.tar.gz "$TOMCAT_URL"
							 | 
						||
| 
								 | 
							
								mkdir -p /opt/tomcat-$TOMCAT_VERSION
							 | 
						||
| 
								 | 
							
								tar --strip-components=1 -xzf /tmp/tomcat.tar.gz -C /opt/tomcat-$TOMCAT_VERSION
							 | 
						||
| 
								 | 
							
								chown -R root:root /opt/tomcat-$TOMCAT_VERSION
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cat <<EOF >/etc/systemd/system/tomcat.service
							 | 
						||
| 
								 | 
							
								[Unit]
							 | 
						||
| 
								 | 
							
								Description=Apache Tomcat Web Application Container
							 | 
						||
| 
								 | 
							
								After=network.target
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[Service]
							 | 
						||
| 
								 | 
							
								Type=forking
							 | 
						||
| 
								 | 
							
								User=$(whoami)
							 | 
						||
| 
								 | 
							
								Group=$(whoami)
							 | 
						||
| 
								 | 
							
								Environment=JAVA_HOME=/usr/lib/jvm/temurin-${jdk_version}-jdk-amd64
							 | 
						||
| 
								 | 
							
								Environment=CATALINA_HOME=/opt/tomcat-$TOMCAT_VERSION
							 | 
						||
| 
								 | 
							
								Environment=CATALINA_BASE=/opt/tomcat-$TOMCAT_VERSION
							 | 
						||
| 
								 | 
							
								Environment=CATALINA_PID=/opt/tomcat-$TOMCAT_VERSION/temp/tomcat.pid
							 | 
						||
| 
								 | 
							
								ExecStart=/opt/tomcat-$TOMCAT_VERSION/bin/catalina.sh start
							 | 
						||
| 
								 | 
							
								ExecStop=/opt/tomcat-$TOMCAT_VERSION/bin/catalina.sh stop
							 | 
						||
| 
								 | 
							
								PIDFile=/opt/tomcat-$TOMCAT_VERSION/temp/tomcat.pid
							 | 
						||
| 
								 | 
							
								SuccessExitStatus=143
							 | 
						||
| 
								 | 
							
								Restart=on-abnormal
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[Install]
							 | 
						||
| 
								 | 
							
								WantedBy=multi-user.target
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								systemctl enable -q --now tomcat
							 | 
						||
| 
								 | 
							
								msg_ok "Tomcat $LATEST_VERSION installed and started"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								motd_ssh
							 | 
						||
| 
								 | 
							
								customize
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								msg_info "Cleaning up"
							 | 
						||
| 
								 | 
							
								rm -f /tmp/tomcat.tar.gz
							 | 
						||
| 
								 | 
							
								$STD apt-get -y autoremove
							 | 
						||
| 
								 | 
							
								$STD apt-get -y autoclean
							 | 
						||
| 
								 | 
							
								msg_ok "Cleaned"
							 |