Files
homeproz/DEPENDENCIES.md
T
Hanson.xyz Dev 5e2bb8585a Initialize beads issue tracking and update git policy
- Initialize beads (.beads/ directory)
- Add Claude Code hooks for SessionStart/PreCompact
- Update CLAUDE.md to clarify all build artifacts are committed
- Update .gitignore to allow node_modules and dist
2025-11-30 01:55:50 -06:00

2.9 KiB
Executable File

HomeProz Server Dependencies

This document tracks server-side dependencies required for the HomeProz WordPress site.

PHP Extensions

Extension Purpose Status
gd Image manipulation, WebP conversion Pre-installed
imagick Image manipulation, WebP conversion (alternative to GD) Pre-installed

Both extensions include WebP support, verified with:

php -r "echo 'GD WebP: ' . (function_exists('imagewebp') ? 'Yes' : 'No') . PHP_EOL;"
php -r "echo 'Imagick WebP: ' . (in_array('WEBP', Imagick::queryFormats()) ? 'Yes' : 'No') . PHP_EOL;"

Nginx Configuration

WebP Serving Rules

Added to /etc/nginx/sites-available/default on 2025-11-28:

# WebP Converter for Media - serve WebP when available
location ~ /wp-content/(?<path>.+)\.(?<ext>jpe?g|png|gif|webp)$ {
    add_header Vary Accept;
    expires 1y;
    add_header Cache-Control "public, immutable";
    access_log off;

    if ($http_accept !~* "image/webp") {
        break;
    }
    try_files /wp-content/uploads-webpc/$path.$ext.webp $uri =404;
}

Purpose: When a browser requests an image from wp-content and sends Accept: image/webp, Nginx checks for a WebP version in /wp-content/uploads-webpc/ and serves it instead. Falls back to original if WebP not available.

After changes: Run nginx -t && service nginx reload

WordPress Plugins (Image Processing)

Plugin Version Purpose
Converter for Media 6.3.2 Converts uploaded images to WebP locally using PHP GD/Imagick

The plugin stores converted WebP files in /wp-content/uploads-webpc/ mirroring the structure of /wp-content/uploads/.

WordPress Plugins (Security)

Plugin Version Purpose
All In One WP Security 5.4.4 Login protection, basic firewall, user enumeration blocking

AIOS Configuration Summary

Login Protection:

  • Max login attempts: 10
  • Retry time period: 5 minutes
  • Lockout length: 30 minutes (max 60)
  • Instant lockout usernames: admin, administrator, test
  • Generic login error messages: enabled
  • Email notifications: enabled
  • Login honeypot: enabled

Hardening:

  • File editing disabled
  • WP generator meta removed
  • Default WP file access prevented
  • User enumeration blocked
  • Unauthorized REST API blocked
  • Clickjacking protection enabled
  • Directory indexing disabled

Note: Many features (5G/6G firewall, IP blacklisting, advanced brute force) are intentionally disabled as Sucuri WAF will handle these at the edge.

Notes

  • No external APIs or services are used for image processing
  • All image conversion happens locally on the server
  • WordPress core handles thumbnail generation for all registered image sizes
  • Security hardening complements (not duplicates) Sucuri WAF features