#!/bin/bash -i # # Purpose : HamPack installer # Print the logo print_logo() { cat << "EOF" ██╗ ██╗ █████╗ ███╗ ███╗██████╗ █████╗ ██████╗██╗ ██╗ ██║ ██║██╔══██╗████╗ ████║██╔══██╗██╔══██╗██╔════╝██║ ██╔╝ ███████║███████║██╔████╔██║██████╔╝███████║██║ █████╔╝ ██╔══██║██╔══██║██║╚██╔╝██║██╔═══╝ ██╔══██║██║ ██╔═██╗ ██║ ██║██║ ██║██║ ╚═╝ ██║██║ ██║ ██║╚██████╗██║ ██╗ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ EOF } # --- Main --- set -e clear print_logo cd ~ sudo -v echo "Getting the latest version of HamPackServer..." rm -rf ~/.local/share/HamPack git clone https://gitea.young.computer/david/HamPackServer.git ~/.local/share/HamPackServer > /dev/null sudo cp ~/.local/share/HamPack/hampackserverrefresh ~/.local/bin/hampackserverrefresh sudo cp ~/.local/share/HamPack/hampackserverupdate ~/.local/bin/hampackserverupdate cd ~/.local/share/HamPackServer # Source utility functions source utils.sh # Source package list if [ ! -f "packages.conf" ]; then echo "Error: packages.conf not found!" exit 1 fi source packages.conf # echo "Updating system..." # sudo pacman -Syu --noconfirm cd ~/ echo "Installing servers..." install_packages "${SERVERS[@]}" cd ~/.local/share/HamPack if [ ! -d "$HOME/.nvm" ]; then curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash else echo "nvm is already installed, skipping." fi if ! command -v node &> /dev/null; then nvm install --lts else echo "Node.js is already installed, skipping." fi if ! pacman -Qi apache &> /dev/null; then echo "Installing Apache..." sudo pacman -S --noconfirm apache sudo systemctl enable httpd sudo systemctl start httpd else echo "Apache is already installed, skipping." fi if ! pacman -Qi mariadb &> /dev/null; then echo "Installing MariaDB (MySQL)..." sudo pacman -S --noconfirm mariadb sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql sudo systemctl enable mariadb sudo systemctl start mariadb else echo "MariaDB is already installed, skipping." fi if ! pacman -Qi php php-curl php-mbstring php-xml &> /dev/null; then sudo pacman -S php php-curl php-mbstring php-xml else echo "PHP packages are already installed, skipping." fi echo "Enabling PHP extensions in /etc/php/php.ini..." for ext in curl mbstring xml pdo_mysql mysqli; do sudo sed -i "s/^;extension=${ext}$/extension=${ext}/" /etc/php/php.ini done # Install Cloudlog CLOUDLOG_DIR="/srv/http/cloudlog" CLOUDLOG_DB="cloudlog" CLOUDLOG_DB_USER="cloudlog" CLOUDLOG_DB_PASS="cloudlog" if [ ! -d "$CLOUDLOG_DIR" ]; then echo "Installing Cloudlog..." sudo git clone https://github.com/magicbug/Cloudlog.git "$CLOUDLOG_DIR" # Set ownership and permissions (Arch Apache runs as 'http') sudo chown -R http:http "$CLOUDLOG_DIR" sudo chmod -R g+rw "$CLOUDLOG_DIR" # Create MariaDB database and user echo "Creating Cloudlog database..." sudo mysql -u root < /dev/null 2>&1; then echo "HamPack is installed. A newer kernel has been installed, a reboot is recommended." read -rp "Reboot now? [y/N] " response case "$response" in [yY][eE][sS]|[yY]) echo "Rebooting..." sudo reboot ;; *) echo "Reboot skipped. Please remember to reboot when convenient." exit 0 ;; esac else echo "Ham Pack is installed. Reboot when convenient." fi