From 0a3e744ca914264dab9aa9a0ca77a3014120d7e5 Mon Sep 17 00:00:00 2001 From: "Dejan R." Date: Sun, 30 Nov 2025 13:54:42 +0000 Subject: [PATCH] added install and unninstall script --- install.sh | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 install.sh diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..5c465bb --- /dev/null +++ b/install.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +# --- Configuration --- +# File name of the FileRun distribution ZIP archive +FILERUN_ZIP="FileRun-2024.1.2-PHP-8.1.zip" +# Directories used for persistent data and code +DATA_DIRS=("db_data" "filerun_html" "user_data") +# UID and GID for the www-data user inside the FileRun container (from docker-compose.yml) +CONTAINER_UID_GID="33:33" +# Temporary directory for extraction +TEMP_DIR="./temp_filerun_extract" +# --------------------- + +echo "--- FileRun Installation Script ---" + +# --- 1. Create and prepare directories --- +echo "1. Creating and ensuring directories exist..." +for dir in "${DATA_DIRS[@]}"; do + if [ ! -d "$dir" ]; then + echo " -> Creating directory: ${dir}/" + mkdir -p "$dir" + fi +done + +# --- 2. Unzip FileRun distribution and move files --- +if [ -f "${FILERUN_ZIP}" ]; then + echo "2. Unzipping ${FILERUN_ZIP} into a temporary folder and moving contents to ./filerun_html..." + + # Create temporary directory for extraction + mkdir -p "$TEMP_DIR" + + # Unzip to temporary folder + unzip -q "${FILERUN_ZIP}" -d "$TEMP_DIR" + if [ $? -ne 0 ]; then + echo "❌ ERROR: Failed to unzip ${FILERUN_ZIP}. Check if 'unzip' is installed or if the file is corrupted." + rm -rf "$TEMP_DIR" + exit 1 + fi + + # Move contents from temp to final location (./filerun_html) + mv "$TEMP_DIR"/* ./filerun_html/ + + # Clean up temporary directory + rm -rf "$TEMP_DIR" + + echo " [SUCCESS] Files extracted and moved to ./filerun_html." +else + echo "❌ ERROR: File not found: ${FILERUN_ZIP}. Please ensure it is in the current directory." + exit 1 +fi + +# --- 3. Set correct ownership for container user (33:33) --- +echo "3. Setting ownership to ${CONTAINER_UID_GID} (www-data) for required FileRun paths..." + +# 3a. Set ownership for the FileRun system data directory (mapped from /var/www/html/system/data) +SYSTEM_DATA_PATH="./filerun_html/system/data" +echo " -> Setting ownership for ${SYSTEM_DATA_PATH}/" +sudo chown -R ${CONTAINER_UID_GID} "${SYSTEM_DATA_PATH}" + +# 3b. Set ownership for the user files directory (mapped from /user-files) +USER_DATA_PATH="./user_data" +echo " -> Setting ownership for ${USER_DATA_PATH}/" +sudo chown -R ${CONTAINER_UID_GID} "${USER_DATA_PATH}" + +echo " [SUCCESS] Ownership set for application use." + +# --- 4. Start Docker Compose services --- +echo "4. Starting Docker services..." +docker compose up -d +if [ $? -ne 0 ]; then + echo "❌ ERROR: Docker Compose failed to start services. Check your docker-compose.yml for errors." + exit 1 +fi +echo " [SUCCESS] Services started in detached mode." + +# --- 5. Verify container status --- +echo "5. Checking FileRun container status..." +# Wait a few seconds for startup +sleep 5 +CONTAINER_STATUS=$(docker compose ps -q filerun | xargs docker inspect --format '{{.State.Status}}') + +if [ "$CONTAINER_STATUS" == "running" ]; then + echo "✅ FileRun container is running." + echo "" + echo "--- NEXT STEPS ---" + echo "FileRun is now accessible via Traefik at: https://filerun.rozic-dev.com" + echo "If you still encounter a 'Database error', the application needs to run its initial setup." + echo "1. Check the detailed application logs for the specific PHP error:" + echo " docker compose logs filerun" + echo "2. The database initialization (tables/schema) may take a moment." +else + echo "❌ WARNING: FileRun container status is '$CONTAINER_STATUS'. Check logs for details:" + echo " docker compose logs filerun" +fi \ No newline at end of file