Service Issues¶
Common service-related problems and their solutions.
Container Issues¶
Container Not Starting¶
Symptoms: - Container shows as "Exited" or "Restarting" - HTTP 502/503 errors - Service not responding
Diagnosis:
# Check service status
docker ps -a | grep service_name
# Check service logs
docker logs service_name --tail 50
# Check resource usage
docker stats service_name
# Check system resources
free -h
df -h
Solutions:
Memory Issues¶
# Check memory usage
docker stats service_name --no-stream
# Increase memory limit
# Edit docker-compose.yml and increase mem_limit
mem_limit: 256m
Port Conflicts¶
# Check port usage
netstat -tulpn | grep :port
# Change port in docker-compose.yml
ports:
- "8081:80" # Use different port
Volume Issues¶
# Check volumes
docker volume ls
docker volume inspect volume_name
# Fix permissions
docker exec service_name chown -R user:user /data
Configuration Errors¶
# Check environment variables
docker exec service_name env
# Validate configuration file
docker exec service_name cat /path/to/config
Container Restarts¶
Symptoms: - Container keeps restarting - Service unstable - Memory leaks
Solutions:
Check Logs¶
# Check recent logs
docker logs service_name --tail 100
# Look for error patterns
docker logs service_name | grep -i error
Resource Limits¶
# Check resource limits
docker inspect service_name | grep -A 10 "Resources"
# Increase limits
docker update service_name --memory=512m
Health Checks¶
# Check health status
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Health}}"
# Test health endpoint
curl -f http://localhost:port/health || echo "Health check failed"
File System Issues¶
Permission Problems¶
# Check file permissions
docker exec service_name ls -la /path/to/files
# Fix permissions
docker exec service_name chown -R user:user /path/to/files
docker exec service_name chmod -R 755 /path/to/files
Disk Space Issues¶
# Check disk usage
df -h
# Check container disk usage
docker exec service_name du -sh /data
# Clean up old files
docker exec service_name find /data -name "*.log" -mtime +30 -delete
Volume Corruption¶
# Check volume integrity
docker volume inspect volume_name
# Recreate volume
docker volume rm volume_name
docker volume create volume_name
Network Issues¶
Service Not Accessible¶
# Check port mapping
docker port service_name
# Test direct access
curl -I http://localhost:port
# Check network connectivity
docker exec service_name ping google.com
DNS Problems¶
# Check DNS resolution
docker exec service_name nslookup service.brennan.page
# Test external DNS
docker exec service_name ping 8.8.8.8
Proxy Issues¶
# Check Caddy configuration
docker exec caddy cat /etc/caddy/Caddyfile | grep -A 5 service_name
# Test proxy
curl -H "Host: service.brennan.page" http://localhost:port
# Reload Caddy
docker restart caddy
Performance Issues¶
Slow Response Times¶
# Check resource usage
docker stats --no-stream
# Check system load
uptime
free -h
# Optimize database
docker exec postgres psql -U homelab -d homelab -c "VACUUM ANALYZE;"
High Memory Usage¶
# Check memory usage
docker stats --no-stream
# Clean up Docker
docker system prune -f
# Restart services
docker compose restart
High CPU Usage¶
# Check CPU usage
docker stats --no-stream
# Identify process
docker exec service_name top
# Restart service
docker restart service_name
Recovery Procedures¶
Service Backup¶
# Backup service data
docker cp -r /opt/homelab/services/service_name /opt/homelab/backups/service_name-$(date +%Y%m%d)
# Backup configuration
docker cp /opt/homelab/services/service_name/docker-compose.yml /opt/homelab/backups/
Service Restore¶
# Stop service
docker stop service_name
# Remove current data
rm -rf /opt/homelab/services/service_name/data
# Restore from backup
docker cp -r /opt/homelab/backups/service_name-20260116 /opt/homelab/services/service_name/data
# Start service
docker start service_name
Complete Reset¶
# Stop and remove everything
docker compose down
rm -rf data
docker volume rm service_volume
# Start fresh
docker compose up -d
Prevention¶
Regular Maintenance¶
- Monitor resource usage
- Check error logs
- Update services regularly
- Backup data
Best Practices¶
- Set appropriate memory limits
- Use health checks
- Monitor disk space
- Keep configurations in version control
Monitoring¶
# System monitoring
docker stats --no-stream
# Log monitoring
docker logs service_name --tail 100 | grep -i error
# Health monitoring
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Health}}"
Getting Help¶
Before Reporting Issues¶
- Checked container logs
- Verified resource usage
- Tested basic connectivity
- Attempted service restart
Information to Include¶
- Container status and logs
- Resource usage statistics
- Network configuration
- Recent changes
- Steps already taken