diff --git a/.github/workflows/conversations.yml b/.github/workflows/conversations.yml index 144a634..1e4c9e7 100644 --- a/.github/workflows/conversations.yml +++ b/.github/workflows/conversations.yml @@ -145,34 +145,11 @@ jobs: key: mail-templates-${{ hashFiles('src/mail/mjml') }} fail-on-cache-miss: true - - name: Start MinIO - run: | - docker pull minio/minio - docker run -d --name minio \ - -p 9000:9000 \ - -e "MINIO_ACCESS_KEY=conversations" \ - -e "MINIO_SECRET_KEY=password" \ - -v /data/media:/data \ - minio/minio server --console-address :9001 /data - # Tool to wait for a service to be ready - name: Install Dockerize run: | curl -sSL https://github.com/jwilder/dockerize/releases/download/v0.8.0/dockerize-linux-amd64-v0.8.0.tar.gz | sudo tar -C /usr/local/bin -xzv - - name: Wait for MinIO to be ready - run: | - dockerize -wait tcp://localhost:9000 -timeout 10s - - - name: Configure MinIO - run: | - MINIO=$(docker ps | grep minio/minio | sed -E 's/.*\s+([a-zA-Z0-9_-]+)$/\1/') - docker exec ${MINIO} sh -c \ - "mc alias set conversations http://localhost:9000 conversations password && \ - mc alias ls && \ - mc mb conversations/conversations-media-storage && \ - mc version enable conversations/conversations-media-storage" - - name: Install Python uses: actions/setup-python@v5 with: diff --git a/compose.yml b/compose.yml index a891c8d..43d33a2 100644 --- a/compose.yml +++ b/compose.yml @@ -21,38 +21,6 @@ services: ports: - "1081:1080" - minio: - user: ${DOCKER_USER:-1000} - image: minio/minio - environment: - - MINIO_ROOT_USER=conversations - - MINIO_ROOT_PASSWORD=password - ports: - - '9000:9000' - - '9001:9001' - healthcheck: - test: ["CMD", "mc", "ready", "local"] - interval: 1s - timeout: 20s - retries: 300 - entrypoint: "" - command: minio server --console-address :9001 /data - volumes: - - ./data/media:/data - - createbuckets: - image: minio/mc - depends_on: - minio: - condition: service_healthy - restart: true - entrypoint: > - sh -c " - /usr/bin/mc alias set conversations http://minio:9000 conversations password && \ - /usr/bin/mc mb conversations/conversations-media-storage && \ - /usr/bin/mc version enable conversations/conversations-media-storage && \ - exit 0;" - app-dev: build: context: . @@ -82,8 +50,6 @@ services: condition: service_started redis: condition: service_started - createbuckets: - condition: service_started nginx: image: nginx:1.25 diff --git a/docs/system-requirements.md b/docs/system-requirements.md index 7562781..2daee4e 100644 --- a/docs/system-requirements.md +++ b/docs/system-requirements.md @@ -19,7 +19,6 @@ Memory is the first bottleneck; CPU matters only when Celery or the Next.js buil | PostgreSQL | **1 – 2 GB** | `shared_buffers` starting point ≈ 25% RAM ([postgresql.org][1]) | | Keycloak | **≈ 1.3 GB** | 70% of limit for heap + ~300 MB non-heap ([keycloak.org][2]) | | Redis | **≤ 256 MB** | Empty instance ≈ 3 MB; budget 256 MB to allow small datasets ([stackoverflow.com][3]) | -| MinIO | **2 GB (dev) / 32 GB (prod)** | Pre-allocates 1–2 GiB; docs recommend 32 GB per host for ≤ 100 Ti storage ([min.io][4]) | | Django API (+ Celery) | **0.8 – 1.5 GB** | Empirical in-house metrics | | Next.js frontend | **0.5 – 1 GB** | Dev build chain | | Nginx | **< 100 MB** | Static reverse-proxy footprint | @@ -27,8 +26,6 @@ Memory is the first bottleneck; CPU matters only when Celery or the Next.js buil [1]: https://www.postgresql.org/docs/9.1/runtime-config-resource.html "PostgreSQL: Documentation: 9.1: Resource Consumption" [2]: https://www.keycloak.org/high-availability/concepts-memory-and-cpu-sizing "Concepts for sizing CPU and memory resources - Keycloak" [3]: https://stackoverflow.com/questions/45233052/memory-footprint-for-redis-empty-instance "Memory footprint for Redis empty instance - Stack Overflow" -[4]: https://min.io/docs/minio/kubernetes/upstream/operations/checklists/hardware.html "Hardware Checklist — MinIO Object Storage for Kubernetes" -[5]: https://discuss.yjs.dev/t/understanding-memory-requirements-for-production-usage/198 "Understanding memory requirements for production usage - Yjs Community" > **Rule of thumb:** add 2 GB for OS/overhead, then sum only the rows you actually run. @@ -86,7 +83,6 @@ Production deployments differ significantly from development environments. The t | 8071 | Django | | 8080 | Keycloak | | 8083 | Nginx proxy | -| 9000/9001 | MinIO | | 15432 | PostgreSQL (main) | | 5433 | PostgreSQL (Keycloak) | | 1081 | Maildev | @@ -100,5 +96,3 @@ Production deployments differ significantly from development environments. The t **CPU** – budget one vCPU per busy container until Celery or Next.js builds saturate. **Disk** – SSD; add 10 GB extra for the Docker layer cache. - -**MinIO** – for demos, mount a local folder instead of running MinIO to save 2 GB+ of RAM. diff --git a/docs/troubleshoot.md b/docs/troubleshoot.md index 0416306..dfc9484 100644 --- a/docs/troubleshoot.md +++ b/docs/troubleshoot.md @@ -83,55 +83,6 @@ If you already have CRLF line endings in your local repository, the **best appro git commit -m "✏️(project) Fix line endings to LF" ``` -## Minio Permission Issues on Windows - -### Problem Description - -On Windows, you may encounter permission-related errors when running Minio in development mode with Docker Compose. This typically happens because: - -- **Windows file permissions** don't map well to Unix-style user IDs used in Docker containers -- **Docker Desktop** may have issues with user mapping when using the `DOCKER_USER` environment variable -- **Minio container** fails to start or access volumes due to permission conflicts - -### Common Symptoms - -- Minio container fails to start with permission denied errors -- Error messages related to file system permissions in Minio logs -- Unable to create or access buckets in the development environment -- Docker Compose showing Minio service as unhealthy or exited - -### Solution for Windows Users - -If you encounter Minio permission issues on Windows, you can temporarily disable user mapping for the Minio service: - -1. **Open the `compose.yml` file** - -2. **Comment out the user directive** in the `minio` service section: - ```yaml - minio: - # user: ${DOCKER_USER:-1000} # Comment this line on Windows if permission issues occur - image: minio/minio - environment: - - MINIO_ROOT_USER=conversations - - MINIO_ROOT_PASSWORD=password - # ... rest of the configuration - ``` - -3. **Restart the services**: - ```bash - make run - ``` - -### Why This Works - -- Commenting out the `user` directive allows the Minio container to run with its default user -- This bypasses Windows-specific permission mapping issues -- The container will have the necessary permissions to access and manage the mounted volumes - -### Note - -This is a **development-only workaround**. In production environments, proper user mapping and security considerations should be maintained according to your deployment requirements. - ## Frontend File Watching Issues on Windows ### Problem Description @@ -189,4 +140,4 @@ Add the `WATCHPACK_POLLING=true` environment variable to the frontend-developmen ### Note -This setting is primarily needed for Windows users. Linux and macOS users typically don't need this setting as file watching works correctly by default on those platforms. \ No newline at end of file +This setting is primarily needed for Windows users. Linux and macOS users typically don't need this setting as file watching works correctly by default on those platforms.