Skip to content

[bug]: Can't get my uploaded images or attachements. #5680

Closed

Description

@saadsb20

Is there an existing issue for this?

  • I have searched the existing issues

Current behavior

When I upload a profile image, It's being uploaded successfully, I can see it from the minio backet, but I can't see it from the web application.
After inspecting I observed that the localhost value is hardcoded, And I can't change to my domain even with setting a different value to the WEB_URL env variable.
image

Here's my docker compose file:

x-app-env: &app-env
  environment:
    - NGINX_PORT=${NGINX_PORT:-99}
    - DEBUG=${DEBUG:-0}
    - SENTRY_DSN=${SENTRY_DSN}
    - SENTRY_ENVIRONMENT=${SENTRY_ENVIRONMENT:-"production"}
    - CORS_ALLOWED_ORIGINS=${CORS_ALLOWED_ORIGINS}
    # Gunicorn Workers
    - GUNICORN_WORKERS=${GUNICORN_WORKERS:-1}
    #DB SETTINGS
    - PGHOST=${PGHOST:-plane-db}
    - PGDATABASE=${PGDATABASE:-plane}
    - POSTGRES_USER=${POSTGRES_USER:-plane}
    - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-plane}
    - POSTGRES_DB=${POSTGRES_DB:-plane}
    - POSTGRES_PORT=${POSTGRES_PORT:-5432}
    - PGDATA=${PGDATA:-/var/lib/postgresql/data}
    - DATABASE_URL=${DATABASE_URL:-postgresql://plane:plane@plane-db/plane}
    # REDIS SETTINGS
    - REDIS_HOST=${REDIS_HOST:-plane-redis}
    - REDIS_PORT=${REDIS_PORT:-6379}
    - REDIS_URL=${REDIS_URL:-redis://plane-redis:6379/}
    # Application secret
    - SECRET_KEY=${SECRET_KEY:-60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5}
    # DATA STORE SETTINGS
    - USE_MINIO=${USE_MINIO:-1}
    - AWS_REGION=${AWS_REGION:-""}
    - AWS_ACCESS_KEY_ID=minioadmin
    - AWS_SECRET_ACCESS_KEY=minioadmin
    - AWS_S3_ENDPOINT_URL=${AWS_S3_ENDPOINT_URL:-http://plane-minio:9000}
    - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads}
    - MINIO_ROOT_USER=minioadmin
    - MINIO_ROOT_PASSWORD=minioadmin
    - BUCKET_NAME=${BUCKET_NAME:-uploads}
    - FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880}
    # Admin and Space URLs
    - WEB_URL=${WEB_URL:-"https://plane.example.ma"}
    - APP_BASE_URL=${WEB_URL:-"https://plane.example.ma"}
    - ADMIN_BASE_URL=${WEB_URL:-"https://plane.example.ma"}
    - SPACE_BASE_URL=${WEB_URL:-"https://plane.example.ma"}

services:
  web:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-frontend:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    restart: unless-stopped
    command: node web/server.js web
    deploy:
      replicas: ${WEB_REPLICAS:-1}
    depends_on:
      - api
      - worker

  space:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-space:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    restart: unless-stopped
    command: node space/server.js space
    deploy:
      replicas: ${SPACE_REPLICAS:-1}
    depends_on:
      - api
      - worker
      - web

  admin:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-admin:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    restart: unless-stopped
    command: node admin/server.js admin
    deploy:
      replicas: ${ADMIN_REPLICAS:-1}
    depends_on:
      - api
      - web

  api:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-backend:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    restart: unless-stopped
    command: ./bin/docker-entrypoint-api.sh
    deploy:
      replicas: ${API_REPLICAS:-1}
    volumes:
      - logs_api:/code/plane/logs
    depends_on:
      - plane-db
      - plane-redis

  worker:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-backend:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    restart: unless-stopped
    command: ./bin/docker-entrypoint-worker.sh
    volumes:
      - logs_worker:/code/plane/logs
    depends_on:
      - api
      - plane-db
      - plane-redis

  beat-worker:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-backend:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    restart: unless-stopped
    command: ./bin/docker-entrypoint-beat.sh
    volumes:
      - logs_beat-worker:/code/plane/logs
    depends_on:
      - api
      - plane-db
      - plane-redis

  migrator:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-backend:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    restart: "no"
    command: ./bin/docker-entrypoint-migrator.sh
    volumes:
      - logs_migrator:/code/plane/logs
    depends_on:
      - plane-db
      - plane-redis

  plane-db:
    <<: *app-env
    image: postgres:15.5-alpine
    pull_policy: if_not_present
    restart: unless-stopped
    command: postgres -c 'max_connections=1000'
    volumes:
      - pgdata:/var/lib/postgresql/data

  plane-redis:
    <<: *app-env
    image: valkey/valkey:7.2.5-alpine
    pull_policy: if_not_present
    restart: unless-stopped
    volumes:
      - redisdata:/data

  plane-minio:
    <<: *app-env
    image: minio/minio:latest
    pull_policy: if_not_present
    restart: unless-stopped
    ports:
      - 9090:9090
    command: server /export --console-address ":9090"
    volumes:
      - uploads:/export

  # Comment this if you already have a reverse proxy running
  proxy:
    <<: *app-env
    image: ${DOCKERHUB_USER:-makeplane}/plane-proxy:${APP_RELEASE:-stable}
    platform: ${DOCKER_PLATFORM:-}
    pull_policy: ${PULL_POLICY:-always}
    ports:
      - ${NGINX_PORT}:80
    depends_on:
      - web
      - api
      - space

volumes:
  pgdata:
  redisdata:
  uploads:
  logs_api:
  logs_worker:
  logs_beat-worker:
  logs_migrator:

Steps to reproduce

  1. use the master branch.
  2. navigate to deploy/self-host/docker-compose.yaml
  3. change the WEB_URL env variable value.
    4 docker compose up --build.
  4. navigate to your profile and change the profile picture and inspect.

Environment

Production

Browser

Google Chrome

Variant

Self-hosted

Version

v0.22.0

Activity

  1. alexsanderp commented on Sep 24, 2024

    @alexsanderp

    image

    The upload is being done correctly, but the GET of the file is not.

  2. alexsanderp commented on Sep 24, 2024

    @alexsanderp

    This happens not only with profile images, but with images in issue comments and attachments in issues.

  3. saadsb20 commented on Sep 25, 2024

    @saadsb20
    Author

    This happens not only with profile images, but with images in issue comments and attachments in issues.

    Can you share your env file ?
    for plane to take the minio container as its storage bucket , AWS_S3_ENDPOINT_URL should have the plane-minio service name in the url.
    AWS_S3_ENDPOINT_URL=http://plane-minio:9000.
    plane-minio is the name of the minio service.

  4. alexsanderp commented on Sep 26, 2024

    @alexsanderp

    @saadsb20 I don't use Minio; I use Google Storage with S3 compatibility for storage...

    envs:

    USE_MINIO=0
    AWS_S3_ENDPOINT_URL=https://storage.googleapis.com/

    The upload works well... However, when I try to do a GET, it puts https://storage.googleapis.com/bucket_name in the URL. Previously, it used to pass WEB_URL/bucket_name, allowing me to use an S3 proxy to serve images from Google Storage (which worked well that way).

  5. akshat5302 commented on Sep 27, 2024

    @akshat5302
    Member

    Hey @alexsanderp, could you please try with USE_MINIO=1

  6. alexsanderp commented on Oct 8, 2024

    @alexsanderp

    @akshat5302 Even without using MINIO?

  7. akshat5302 commented on Oct 14, 2024

    @akshat5302
    Member

    yes please, try it once and let me know the outcome

  8. alexsanderp commented on Oct 17, 2024

    @alexsanderp

    @akshat5302 ok, I'll try

  9. akshat5302 commented on Feb 6, 2025

    @akshat5302
    Member

    Hey @alexsanderp, did the above suggestion worked?

  10. akshat5302 commented on Apr 21, 2025

    @akshat5302
    Member

    Closing this issue for now. Feel free to reopen it if needed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

🐛bugSomething isn't working

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions