mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
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>
96 lines
2.4 KiB
YAML
96 lines
2.4 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# Base de données PostgreSQL
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: socialflow-db
|
|
restart: unless-stopped
|
|
ports:
|
|
- "4523:4523"
|
|
environment:
|
|
POSTGRES_DB: ${PGDATABASE:-socialflow}
|
|
POSTGRES_USER: ${PGUSER:-socialflow}
|
|
POSTGRES_PASSWORD: ${PGPASSWORD:-changeme}
|
|
PGPORT: 4523
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
networks:
|
|
- internal
|
|
- nginx_default
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready -U ${PGUSER:-socialflow}" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# Application Social Flow
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: socialflow-app
|
|
restart: unless-stopped
|
|
environment:
|
|
NODE_ENV: production
|
|
PORT: 5555
|
|
DATABASE_URL: postgresql://${PGUSER:-socialflow}:${PGPASSWORD:-changeme}@postgres:4523/${PGDATABASE:-socialflow}
|
|
OPENROUTER_API_KEY: ${OPENROUTER_API_KEY}
|
|
SESSION_SECRET: ${SESSION_SECRET:-your-secret-key-change-me}
|
|
APP_URL: ${APP_URL:-http://localhost:5555}
|
|
# URL interne Docker pour que ffmpeg-api puisse télécharger les fichiers audio
|
|
INTERNAL_APP_URL: http://socialflow-app:5555
|
|
# Configuration FFmpeg Service
|
|
FFMPEG_API_URL: http://ffmpeg-api:8000
|
|
FFMPEG_API_KEY: ${FFMPEG_API_KEY:-socialflow-secret-ffmpeg-key}
|
|
networks:
|
|
- internal
|
|
- nginx_default
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
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é
|
|
ffmpeg-api:
|
|
build:
|
|
context: ./ffmpeg-service
|
|
dockerfile: Dockerfile
|
|
container_name: socialflow-ffmpeg
|
|
restart: unless-stopped
|
|
environment:
|
|
API_KEY: ${FFMPEG_API_KEY:-socialflow-secret-ffmpeg-key}
|
|
networks:
|
|
- internal
|
|
expose:
|
|
- "8000"
|
|
|
|
volumes:
|
|
postgres_data:
|
|
driver: local
|
|
encryption_key:
|
|
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
|
|
internal:
|
|
driver: bridge
|
|
|
|
# Réseau externe pour nginx reverse proxy
|
|
nginx_default:
|
|
external: true
|