16 Commits

Author SHA1 Message Date
BeauTroll
fc1cac8e5a fix: properly configure Apache MPM Prefork with dedicated config file
- Create dedicated apache/mpm_prefork.conf to override default MPM settings
- Mount mpm_prefork.conf to /etc/apache2/mods-available/ to properly apply limits
- Remove MPM config from nextcloud.conf (was being ignored)
- Set ServerLimit and MaxRequestWorkers to 400 (up from 150 default)
- Configure optimized worker settings for better concurrency

This fixes the "server reached MaxRequestWorkers" error that was causing
sync failures and 404 errors by properly overriding Apache's default
configuration file instead of trying to set it in conf-enabled.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 04:14:41 +01:00
BeauTroll
8096d8985b Merge remote-tracking branch 'origin/main' 2026-01-03 04:03:16 +01:00
BeauTroll
8462b10e3b fix: increase Apache MaxRequestWorkers and optimize performance settings
- Increase MaxRequestWorkers from 150 to 400 to prevent "server reached MaxRequestWorkers" errors
- Configure MPM Prefork module with optimized worker settings
- Add AllowEncodedSlashes NoDecode for special characters in filenames
- Increase Redis maxmemory from 512MB to 2GB for better caching
- Extend PHP execution times from 1800s to 7200s for large operations
- Increase MariaDB max_allowed_packet to 1GB for large file uploads

These changes resolve sync failures caused by Apache worker exhaustion.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 04:00:12 +01:00
root
6bdd8e918c add traefik transport 2025-12-23 01:28:12 +01:00
root
44ec0a004a remove uncessary labels 2025-12-23 01:04:16 +01:00
root
c403419ea1 adapt for traefik labels 2025-12-23 00:23:18 +01:00
BeauTroll
a1b51599c6 feat: expose Apache logs to host for fail2ban integration
- Mount Apache logs directory to ./logs/apache
- Configure JSON file logging driver with rotation
- Set max log size to 10MB with 3 files retention
- Enable fail2ban to monitor access logs directly
- Prevents need for systemd service to export logs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 21:03:48 +01:00
BeauTroll
123f7b6a9c feat: add custom Docker image with ffmpeg for video previews
- Create Dockerfile extending nextcloud:latest with ffmpeg
- Add .dockerignore to optimize build context
- Update docker-compose.yml to use custom image build
- Modify update.sh to rebuild custom image on updates
- Document custom image setup in README
- Enable video preview generation for .mov, .mp4 files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 13:51:19 +01:00
BeauTroll
a83426d198 feat: enhance Apache config for Traefik reverse proxy
- Add RemoteIP configuration to capture real client IPs
- Enable HTTPS detection via X-Forwarded-Proto header
- Add security headers (X-Frame-Options, CSP, etc.)
- Disable Apache WebDAV to prevent conflicts with Nextcloud
- Add module activation script for remoteip and env
- Optimize Directory options (FollowSymLinks without MultiViews)
- Add commented alternative PHP limits for reference

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 12:37:23 +01:00
BeauTroll
6fa7704c13 feat: add custom Apache configuration for Nextcloud
Add custom Apache configuration file to optimize Nextcloud performance and security.
Mount nextcloud.conf into Apache's conf-enabled directory for automatic loading.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 18:41:19 +01:00
BeauTroll
e055d708a5 feat: add automated backup system with Docker-based cron
Implement a dedicated Docker container (backup-cron) for automated daily
backups and maintenance tasks, eliminating the need for host cron configuration.

New features:
- backup-cron service: Alpine-based container with Docker CLI and cron
- Automated daily backup at 5:00 AM (Europe/Paris timezone)
- Automated health check at 6:00 AM (after backup)
- Weekly log cleanup on Sundays at 3:00 AM (removes logs >30 days)

Files added:
- cron/Dockerfile: Alpine Linux with docker-cli, bash, and tzdata
- cron/entrypoint.sh: Starts crond and displays configuration
- cron/crontab: Scheduled tasks configuration
- cron/README.md: Complete documentation for automated backups
- scripts/clean-old-logs.sh: Automated log cleanup script

Makefile enhancements:
- make cron-status: Display backup automation status and schedule
- make cron-logs: View logs from automated tasks

Configuration improvements:
- Auto-detect COMPOSE_PROJECT_NAME from directory name (portable)
- Fix df command to use POSIX format (-P flag) for consistent output
- Updated .env.example with COMPOSE_PROJECT_NAME documentation

Benefits:
- No host cron configuration required
- Portable across different environments
- Automatic timezone handling
- Integrated with existing backup/health check scripts
- Logs all automated tasks for monitoring

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 02:24:48 +01:00
BeauTroll
f3655144a7 improve transparency and fix variable naming 2025-12-16 03:23:42 +01:00
BeauTroll
db65cd7ec9 add dev/prod configuration 2025-12-15 03:47:03 +01:00
BeauTroll
d0ce7d5185 remove redis host from env 2025-12-15 02:53:50 +01:00
root
323a16f287 refactor docker compose 2025-12-14 20:10:07 +01:00
root
ad8f074f87 initial commit 2025-12-14 18:27:38 +01:00