#!/bin/bash # Exit immediately if a command exits with a non-zero status set -e HOST_FQDN=$(hostname -f) SERVER_CERT="CERT_${HOST_FQDN}.crt" SERVER_KEY="KEY_${HOST_FQDN}.pem" # Update system packages echo "Updating system packages..." sudo dnf update -y # Install Apache HTTP Server echo "Installing Apache HTTP Server..." sudo dnf install -y httpd # Enable and start Apache echo "Enabling and starting Apache..." sudo systemctl enable httpd sudo systemctl start httpd # Install MariaDB (MySQL fork) echo "Installing MariaDB..." sudo dnf install -y mariadb-server # Enable and start MariaDB echo "Enabling and starting MariaDB..." sudo systemctl enable mariadb sudo systemctl start mariadb # Secure MariaDB installation echo "Securing MariaDB installation..." sudo mysql_secure_installation # Install PHP and required extensions echo "Installing PHP and required extensions..." subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf install -y php php-mysqlnd php-pdo php-gd php-mbstring php-intl php-json php-xml php-zip libzip sudo dnf install -y php-pecl-zip php-* # Enable and start PHP-FPM echo "Enabling and starting PHP-FPM..." sudo systemctl enable php-fpm sudo systemctl start php-fpm # Download OwnCloud echo "Downloading OwnCloud..." wget https://download.owncloud.com/server/stable/owncloud-latest.zip # Extract OwnCloud echo "Extracting OwnCloud..." sudo unzip owncloud-latest.zip -d /var/www/html/ # Set ownership and permissions echo "Setting ownership and permissions..." sudo chown -R apache:apache /var/www/html/owncloud sudo chmod -R 755 /var/www/html/owncloud # Create a new Apache configuration file for OwnCloud echo "Creating Apache configuration for OwnCloud..." sudo bash -c 'cat > /etc/httpd/conf.d/owncloud.conf < DocumentRoot "/var/www/owncloud" ServerName owncloud.example.com Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog /var/log/httpd/owncloud_error.log CustomLog /var/log/httpd/owncloud_access.log combined EOF' # Restart Apache to apply changes echo "Restarting Apache to apply changes..." sudo systemctl restart httpd # Create OwnCloud database and user echo "Creating OwnCloud database and user..." sudo mysql -u root -p -e "CREATE DATABASE owncloud;" sudo mysql -u root -p -e "CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'owncloudpassword';" sudo mysql -u root -p -e "GRANT ALL PRIVILEGES ON owncloud.* TO 'ownclouduser'@'localhost';" sudo mysql -u root -p -e "FLUSH PRIVILEGES;" # Create a new Apache SSL configuration file for OwnCloud echo "Creating Apache SSL configuration for OwnCloud..." sudo cat << EOF > /etc/httpd/conf.d/owncloud-ssl.conf DocumentRoot "/var/www/html/owncloud" ServerName owncloud.example.com SSLEngine on SSLCertificateFile /etc/pki/tls/certs/$SERVER_CERT SSLCertificateKeyFile /etc/pki/tls/private/$SERVER_KEY Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog /var/log/httpd/owncloud_error.log CustomLog /var/log/httpd/owncloud_access.log combined EOF # Restart Apache to apply changes echo "Restarting Apache to apply changes..." sudo systemctl restart httpd # Firewall configuration to allow HTTP and HTTPS traffic echo "Configuring firewall to allow HTTP and HTTPS traffic..." sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload echo "OwnCloud installation is complete. Please navigate to https://owncloud.example.com to complete the setup through the web interface."