services: backend: build: . ports: - '3000:3000' environment: JWT_SECRET: ${JWT_SECRET:-change-me-to-a-long-random-secret} PUBLIC_URL: ${PUBLIC_URL:-http://localhost:3000} INTERNAL_URL: ${INTERNAL_URL:-http://backend:3000} ONLYOFFICE_URL: ${ONLYOFFICE_URL:-http://localhost:8080} ONLYOFFICE_INTERNAL_URL: ${ONLYOFFICE_INTERNAL_URL:-http://onlyoffice} SESSION_TTL_MS: ${SESSION_TTL_MS:-900000} TEMP_DIR: /tmp/sejong PORT: 3000 MAX_UPLOAD_MB: ${MAX_UPLOAD_MB:-50} tmpfs: - /tmp/sejong:size=512m,mode=1777 depends_on: - onlyoffice restart: unless-stopped onlyoffice: image: onlyoffice/documentserver:8.3 ports: - '8080:80' environment: JWT_ENABLED: 'true' JWT_SECRET: ${JWT_SECRET:-change-me-to-a-long-random-secret} JWT_HEADER: Authorization JWT_IN_BODY: 'true' volumes: # Persist DS license/cache lightly; document content still lives in backend tmpfs - onlyoffice_data:/var/www/onlyoffice/Data restart: unless-stopped volumes: onlyoffice_data: