feat: Replace external storage with local file storage + auto cleanup

Media is now stored directly on the server disk (no external service).
Files are served via Express static middleware at /uploads/*.

Cleanup rules:
- Videos deleted immediately after successful publish to Facebook/Instagram
- Videos older than 7 days purged daily by cron job
- Images older than 30 days purged daily by cron job

Changes:
- server/services/minio.ts: replaced S3 client with local fs read/write
- server/index.ts: added static serving for /uploads/media, /logos, /stories
- server/services/media-purge.ts: new rules (images 30d, videos 7d)
- server/services/scheduler.ts: delete local videos after successful publish
- docker-compose.yml: add media_uploads, logos_uploads, stories_uploads volumes
- settings UI: removed credentials card, shows local storage info
- package.json: removed googleapis (unneeded)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Sonnet 4.6 committed 2026-03-25 07:35:27 +01:00
1 parent ba94e7cc7d
commit 7733acbc22
9 files changed
+145 -378

No files matched your search

+9 -3
View File
@@ -43,9 +43,6 @@ services:
# Configuration FFmpeg Service
FFMPEG_API_URL: http://ffmpeg-api:8000
FFMPEG_API_KEY: ${FFMPEG_API_KEY:-socialflow-secret-ffmpeg-key}
# Configuration MinIO (stockage fichiers)
MINIO_ENDPOINT: ${MINIO_ENDPOINT:-http://minio:9000}
MINIO_PUBLIC_URL: ${MINIO_PUBLIC_URL:-http://localhost:9000}
networks:
- internal
- nginx_default
@@ -55,6 +52,9 @@ services:
volumes:
- encryption_key:/app/.encryption-key-data
- audio_uploads:/app/uploads/audio
- media_uploads:/app/uploads/media
- logos_uploads:/app/uploads/logos
- stories_uploads:/app/uploads/stories
command: npm run start
# Service FFmpeg dédié
@@ -78,6 +78,12 @@ volumes:
driver: local
audio_uploads:
driver: local
media_uploads:
driver: local
logos_uploads:
driver: local
stories_uploads:
driver: local
networks:
# Réseau interne pour la communication DB <-> App