# NextCloud Hardening & Optimization **Service:** NextCloud Hub 25 (32.0.5) **Location:** Ghost VPS (64.50.188.14) **Domain:** downloads.firefrostgaming.com **Date:** February 11, 2026 **Performed By:** Michael + Claude --- ## Pre-Existing State NextCloud was previously installed on Ghost VPS with full nginx config and SSL certificate. Discovery occurred during planned deployment — the installation survived a documentation loss from a crash a few days prior. 15 security/performance warnings were present in the admin panel. --- ## Changes Applied ### Round 1: PHP & Nginx Fixes | Fix | Before | After | | :---- | :---- | :---- | | PHP memory_limit | 128M | 512M | | OPcache interned_strings_buffer | 8 (commented out) | 16 (enabled) | | .mjs MIME type | Missing | Added to /etc/nginx/mime.types | | X-Robots-Tag header | Missing | noindex,nofollow | | X-Permitted-Cross-Domain-Policies | Missing | none | | Strict-Transport-Security (HSTS) | Missing | max-age=15552000; includeSubDomains | | OCS provider location block | Missing | Added (cosmetic warning persists — Hub 25 known issue) | | Database missing indices | fs_storage_path_prefix, properties_name_path_user | Added via occ db:add-missing-indices | | Mimetype migrations | Pending | Completed via occ maintenance:repair --include-expensive | | Maintenance window | Not set | 7 UTC (1 AM CST) | | PHP clear_env | Commented out (;clear_env = no) | Enabled (clear_env = no) | ### Round 2: Redis & Memcache | Fix | Before | After | | :---- | :---- | :---- | | Redis server | Not installed | redis-server 5:7.0.15 installed | | PHP Redis extension | Not installed | php8.3-redis 5.3.7 installed | | memcache.local | Not configured | \OC\Memcache\Redis | | memcache.locking | Not configured (database locking) | \OC\Memcache\Redis | | Redis connection | N/A | localhost:6379 | ### Round 3: Cleanup | Fix | Before | After | | :---- | :---- | :---- | | AppAPI app | Enabled (warning about missing deploy daemon) | Disabled via occ app:disable | | Imagick SVG | Missing | libmagickcore-6.q16-7-extra installed | | Log warnings | 3 old warnings from Feb 4 | Log truncated, level set to Warning (2) | --- ## Files Modified - `/etc/php/8.3/fpm/php.ini` — memory_limit, opcache.interned_strings_buffer - `/etc/php/8.3/fpm/pool.d/www.conf` — clear_env - `/etc/nginx/mime.types` — added .mjs - `/etc/nginx/sites-enabled/downloads.firefrostgaming.com` — headers, OCS provider block - `/var/www/nextcloud/config/config.php` — Redis memcache config --- ## Packages Installed - redis-server (5:7.0.15) - php8.3-redis (5.3.7) - php8.3-igbinary (3.2.13) - libmagickcore-6.q16-7-extra (8:6.9.12.98) --- ## Services Restarted - php8.3-fpm (multiple times during config changes) - nginx (reload after header/MIME changes) --- ## Remaining Warnings (Intentional) | Warning | Reason for Skipping | | :---- | :---- | | OCS provider resolving | Known Hub 25 cosmetic bug — request reaches PHP correctly (verified via curl), NextCloud returns 404 internally | | Email test | Deferred — requires Plesk migration discussion for proper email infrastructure | --- ## Result - **Before:** 15 warnings (including "errors regarding your setup") - **After:** 2 warnings (both intentional skips, downgraded to "warnings regarding your setup") - **NextCloud status:** Healthy, cached with Redis, optimized for performance --- ## Revision History | Version | Date | Changes | | :---- | :---- | :---- | | 1.0 | 2026-02-11 | Initial hardening documentation |