Commit Graph

7 Commits

Author SHA1 Message Date
Jeff Emmett 28aafb73fe feat: wire rfiles to pull secrets from Infisical at startup
Add entrypoint.sh that authenticates with Infisical via universal auth
and injects secrets as environment variables before the main process
starts. Update Dockerfile with ENTRYPOINT directive and add Infisical
connection vars to all services in both compose files (dev and prod).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 19:36:55 -08:00
Jeff Emmett 522340507a Fix CSRF 403 behind Cloudflare tunnel — add X-Forwarded-Proto header via Traefik middleware
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 18:34:48 -07:00
Jeff Emmett c4ac33bd7c fix: add proper healthchecks for Celery containers
Celery containers inherited the HTTP healthcheck from the Dockerfile
but don't run a web server. Added celery inspect ping for the worker
and schedule file check for beat.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 18:30:11 -07:00
Jeff Emmett 91bb60c130 Fix celery-beat crash: write schedule to /tmp tmpfs
The read_only filesystem prevents celery-beat from writing its
schedule file to /app. Redirect to /tmp which is a writable tmpfs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 18:20:24 -07:00
Jeff Emmett 56f58b3583 security: harden production containers
Add cap_drop ALL, no-new-privileges, read_only + tmpfs to all
containers (postgres, redis, backend, celery worker, celery beat).
Matches Phase 3 security hardening standards.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 15:27:17 -07:00
Jeff Emmett 8220ad5d3b Route uploads through direct.rfiles.online to bypass Cloudflare 100MB limit
- Add direct.rfiles.online A record (DNS only, not proxied through CF)
- Add TLS-enabled Traefik router with Let's Encrypt for direct subdomain
- Add DirectUploadAPIView that accepts space slug as form field
- All uploads now go to https://direct.rfiles.online/api/upload/
- CORS allows *.rfiles.online origins
- Middleware treats 'direct' as reserved (not a shared space)
- Removes chunked upload complexity (no longer needed)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 18:02:14 +00:00
Jeff Emmett cf9cc22c58 Initial commit: rfiles.online standalone file sharing platform
Extracted from PKMN (personal-knowledge-management-network) into its own
repo with separate database, file storage, and Docker stack.

- files app: SharedSpace, MediaFile, PublicShare, FileAccessLog models
- portal app: Landing page, upload, file management, shared space views
- Host-based URL routing for subdomain shared spaces (*.rfiles.online)
- PWA with service worker and share target support
- Celery tasks for expired share cleanup and file processing
- Docker Compose for dev and production (Traefik + PostgreSQL + Redis)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 15:46:31 +00:00