New article mastodon-s3-acl-upload-failures.md: a BucketOwnerEnforced S3 bucket plus a stale S3_PERMISSION/S3_ACL in .env.production makes every Mastodon upload fail with AccessControlListNotSupported, silently. Covers symptoms (incl. why a missing object returns 403 not 404), diagnosis, the fix (S3_PERMISSION= empty, public read via bucket policy), recovery, a synthetic-write health check, and Ansible enforcement. Extend mastodon-prune-profiles-trap.md: add a "Bulk restore at scale" procedure (list existing keys, null missing DB refs, enqueue RedownloadAvatar/HeaderWorker), a "storage-level deletion without DB de-ref" section, and a stronger recommendation to disable automated profile pruning (and scheduled accounts refresh --all) entirely. Link both from SUMMARY.md and the selfhosting index. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
53 lines
2.3 KiB
Markdown
53 lines
2.3 KiB
Markdown
---
|
|
created: 2026-04-13T10:15
|
|
updated: 2026-05-31
|
|
---
|
|
# 🏠 Self-Hosting & Homelab
|
|
|
|
Guides for running your own services at home, including Docker, reverse proxies, DNS, storage, monitoring, and security.
|
|
|
|
## Docker & Containers
|
|
|
|
- [Self-Hosting Starter Guide](docker/self-hosting-starter-guide.md)
|
|
- [Docker vs VMs for the Homelab](docker/docker-vs-vms-homelab.md)
|
|
- [Debugging Broken Docker Containers](docker/debugging-broken-docker-containers.md)
|
|
|
|
## Reverse Proxies
|
|
|
|
- [Setting Up Caddy as a Reverse Proxy](reverse-proxy/setting-up-caddy-reverse-proxy.md)
|
|
|
|
## DNS & Networking
|
|
|
|
- [Tailscale for Homelab Remote Access](dns-networking/tailscale-homelab-remote-access.md)
|
|
|
|
## Storage & Backup
|
|
|
|
- [rsync Backup Patterns](storage-backup/rsync-backup-patterns.md)
|
|
|
|
## Monitoring
|
|
|
|
- [Tuning Netdata Web Log Alerts](monitoring/tuning-netdata-web-log-alerts.md)
|
|
- [Tuning Netdata Docker Health Alarms](monitoring/netdata-docker-health-alarm-tuning.md)
|
|
- [Deploying Netdata to a New Server](monitoring/netdata-new-server-setup.md)
|
|
|
|
## Services
|
|
|
|
- [Mastodon Instance Tuning](services/mastodon-instance-tuning.md)
|
|
- [Mastodon Post-Install Hardening (Permissions + Account)](services/mastodon-post-install-hardening.md)
|
|
- [Mastodon DB Maintenance](services/mastodon-db-maintenance.md)
|
|
- [Mastodon Federation](services/mastodon-federation.md)
|
|
- [Mastodon `--prune-profiles` Trap](services/mastodon-prune-profiles-trap.md)
|
|
- [Mastodon on S3 — Silent Upload Failures](services/mastodon-s3-acl-upload-failures.md)
|
|
- [Ghost SMTP via Mailgun](services/ghost-smtp-mailgun-setup.md)
|
|
- [Updating n8n Docker](services/updating-n8n-docker.md)
|
|
- [Claude Code Remote Control](services/claude-code-remote-control.md)
|
|
|
|
## Security
|
|
|
|
- [Linux Server Hardening Checklist](security/linux-server-hardening-checklist.md)
|
|
- [Standardizing unattended-upgrades with Ansible](security/ansible-unattended-upgrades-fleet.md)
|
|
- [Fail2ban Custom Jail: Apache 404 Scanner Detection](security/fail2ban-apache-404-scanner-jail.md)
|
|
- [Fail2ban Custom Jail: Apache PHP Webshell Probe Detection](security/fail2ban-apache-php-probe-jail.md)
|
|
- [Fail2ban Custom Jail: WordPress Login Brute Force](security/fail2ban-wordpress-login-jail.md)
|
|
- [SELinux: Fixing Fail2ban grep execmem Denial](security/selinux-fail2ban-execmem-fix.md)
|
|
- [UFW Firewall Management](security/ufw-firewall-management.md)
|