diagnose-nextcloud.sh
1 #!/bin/bash 2 set -e 3 4 # Ensure we're in the correct directory 5 cd ~/fieldwork/fold-stack 6 7 # Header 8 echo "===== Nextcloud Diagnostic Report =====" 9 echo "Generated on: $(date)" 10 echo "======================================" 11 echo "" 12 13 # Step 1: Check Container Status 14 echo "1. Nextcloud Container Status" 15 echo "-----------------------------" 16 docker ps -a --filter "name=nextcloud_dev" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" 17 if [ "$(docker ps -q -f name=nextcloud_dev)" ]; then 18 echo "Container is running." 19 else 20 echo "Container is NOT running!" 21 fi 22 echo "" 23 24 # Step 2: Check Container Logs 25 echo "2. Nextcloud Logs (last 50 lines)" 26 echo "---------------------------------" 27 docker logs nextcloud_dev --tail 50 2>&1 || echo "Failed to retrieve logs." 28 echo "" 29 30 # Step 3: Check Volume Permissions 31 echo "3. Volume Permissions" 32 echo "---------------------" 33 echo "Checking ./volumes/nextcloud/html (should be owned by www-data, UID/GID 33:33):" 34 ls -ld ./volumes/nextcloud/html 35 ls -l ./volumes/nextcloud/html | head -n 5 36 echo "Checking ./volumes/nextcloud/data (should be owned by www-data, UID/GID 33:33):" 37 ls -ld ./volumes/nextcloud/data 38 ls -l ./volumes/nextcloud/data | head -n 5 39 echo "" 40 41 # Step 4: Check Nextcloud Configuration 42 echo "4. Nextcloud Configuration" 43 echo "--------------------------" 44 if [ -f ./volumes/nextcloud/html/config/config.php ]; then 45 echo "config.php exists. Checking key settings..." 46 echo "Trusted Domains:" 47 grep -A 5 "'trusted_domains'" ./volumes/nextcloud/html/config/config.php || echo "Not found." 48 echo "Overwrite Settings:" 49 grep -E "'overwrite\..*'" ./volumes/nextcloud/html/config/config.php || echo "Not found." 50 else 51 echo "config.php not found! Nextcloud may not be installed." 52 fi 53 echo "" 54 55 # Step 5: Check Nextcloud Status via OCC 56 echo "5. Nextcloud OCC Status" 57 echo "-----------------------" 58 docker exec nextcloud_dev php occ status 2>&1 || echo "Failed to run occ status." 59 echo "" 60 61 # Step 6: Check Database Accessibility 62 echo "6. Database Check" 63 echo "-----------------" 64 # Since we're using SQLite (based on the setup), check if the database file exists and is writable 65 echo "Checking SQLite database file (/var/www/html/data/nextcloud.db):" 66 docker exec nextcloud_dev ls -l /var/www/html/data/nextcloud.db 2>&1 || echo "Database file not found or inaccessible." 67 echo "" 68 69 # Step 7: Check Web Server (Apache) Status 70 echo "7. Web Server (Apache) Status" 71 echo "----------------------------" 72 docker exec nextcloud_dev ps aux | grep apache2 || echo "No Apache processes found." 73 echo "" 74 75 # Step 8: Test Network Connectivity 76 echo "8. Network Connectivity" 77 echo "-----------------------" 78 echo "Testing healthcheck endpoint (http://localhost/status.php):" 79 docker exec nextcloud_dev curl -f http://localhost/status.php 2>&1 || echo "Failed to reach status.php." 80 echo "Testing external access (http://localhost:8081):" 81 curl -f http://localhost:8081/status.php 2>&1 || echo "Failed to reach Nextcloud directly on port 8081." 82 echo "Testing proxy access (http://localhost/nextcloud/):" 83 curl -f http://localhost/nextcloud/status.php 2>&1 || echo "Failed to reach Nextcloud via Nginx proxy." 84 echo "" 85 86 # Step 9: Check Nginx Proxy Configuration 87 echo "9. Nginx Proxy Configuration" 88 echo "----------------------------" 89 echo "Checking Nginx container status:" 90 docker ps -a --filter "name=nginx_dev" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" 91 echo "Checking Nginx logs for Nextcloud errors (last 20 lines):" 92 docker logs nginx_dev --tail 20 2>&1 | grep -i nextcloud || echo "No Nextcloud-related errors found in Nginx logs." 93 echo "Checking Nginx configuration for Nextcloud:" 94 grep -A 20 "location /nextcloud/" nginx/dev/default.conf || echo "Nextcloud proxy configuration not found." 95 echo "" 96 97 # Step 10: Check Disk Space 98 echo "10. Disk Space" 99 echo "--------------" 100 df -h ./volumes/nextcloud 101 echo "" 102 103 # Step 11: Check Memory Usage 104 echo "11. Memory Usage" 105 echo "----------------" 106 docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}" | grep nextcloud_dev 107 echo "" 108 109 # Step 12: Check for Maintenance Mode 110 echo "12. Maintenance Mode" 111 echo "--------------------" 112 docker exec nextcloud_dev php occ maintenance:mode 2>&1 || echo "Failed to check maintenance mode." 113 echo "" 114 115 # Step 13: Check for Pending Updates or Repairs 116 echo "13. Pending Updates/Repairs" 117 echo "---------------------------" 118 docker exec nextcloud_dev php occ upgrade 2>&1 || echo "Failed to run occ upgrade." 119 docker exec nextcloud_dev php occ db:add-missing-indices 2>&1 || echo "Failed to run db:add-missing-indices." 120 docker exec nextcloud_dev php occ db:convert-filecache-bigint 2>&1 || echo "Failed to run db:convert-filecache-bigint." 121 echo "" 122 123 echo "===== End of Nextcloud Diagnostic Report ====="