#!/bin/bash # Immich Health Check Script echo "=========================================" echo "Immich Health Check - $(date)" echo "=========================================" echo "" # Check Docker containers echo "📦 Docker Containers:" cd ~/immich CONTAINERS=$(docker-compose ps --services) ALL_UP=true for service in $CONTAINERS; do STATUS=$(docker-compose ps -q $service | xargs docker inspect -f '{{.State.Status}}') if [ "$STATUS" = "running" ]; then echo " ✓ $service: running" else echo " ✗ $service: $STATUS" ALL_UP=false fi done echo "" # Check Immich API echo "🌐 Immich API:" API_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:2283/api/server/ping 2>/dev/null) if [ "$API_RESPONSE" = "200" ]; then echo " ✓ API responding (HTTP $API_RESPONSE)" else echo " ✗ API not responding (HTTP $API_RESPONSE)" ALL_UP=false fi echo "" # Check disk space echo "💾 Storage Usage:" USAGE=$(df -h ~/immich | tail -1 | awk '{print $5}' | sed 's/%//') AVAILABLE=$(df -h ~/immich | tail -1 | awk '{print $4}') echo " Disk usage: ${USAGE}%" echo " Available: $AVAILABLE" if [ "$USAGE" -gt 85 ]; then echo " ⚠️ Warning: Disk usage above 85%" fi echo "" # Check library size echo "📸 Library Statistics:" UPLOAD_SIZE=$(du -sh ~/immich/library 2>/dev/null | cut -f1) echo " Library size: $UPLOAD_SIZE" PHOTO_COUNT=$(find ~/immich/library -type f 2>/dev/null | wc -l) echo " File count: $PHOTO_COUNT" echo "" # Check latest backup echo "💾 Latest Backup:" LATEST_BACKUP=$(ls -t ~/immich/backups/immich-db-*.sql.gz 2>/dev/null | head -1) if [ -n "$LATEST_BACKUP" ]; then BACKUP_DATE=$(stat -c %y "$LATEST_BACKUP" | cut -d' ' -f1) BACKUP_SIZE=$(du -h "$LATEST_BACKUP" | cut -f1) echo " ✓ Latest backup: $(basename $LATEST_BACKUP)" echo " Date: $BACKUP_DATE" echo " Size: $BACKUP_SIZE" # Check backup age BACKUP_AGE=$((($(date +%s) - $(stat -c %Y "$LATEST_BACKUP")) / 86400)) if [ "$BACKUP_AGE" -gt 1 ]; then echo " ⚠️ Warning: Backup is $BACKUP_AGE days old" fi else echo " ✗ No backups found" fi echo "" # Overall status echo "=========================================" if [ "$ALL_UP" = true ]; then echo "Status: ✓ All systems operational" else echo "Status: ✗ Issues detected - check above" fi echo "========================================="