makeplane / plane

🔥 🔥 🔥 Open Source JIRA, Linear, Monday, and Asana Alternative. Plane helps you track your issues, epics, and product roadmaps in the simplest way possible.
http://plane.so
GNU Affero General Public License v3.0
30.94k stars 1.74k forks source link

[bug]: "Access to the bucket 'uploads' is forbidden. Check permissions." on a new self hosted installation #5663

Open Alt791350 opened 2 months ago

Alt791350 commented 2 months ago

Is there an existing issue for this?

Current behavior

When I setup a new self hosted instance (following the documentation at https://docs.plane.so/self-hosting/methods/docker-compose ), I can't upload a profile picture. Diving into the logs I see the following in the API logs:

Checking bucket...
Access to the bucket 'uploads' is forbidden. Check permissions.
Cache Cleared

All services are running (expect for migration), I can go into the Minio admin panel, log in and everything.

I expected the setup to automatically setup a Minio bucket or the documentation explaining how to setup Minio if it needs any manually setup.

Steps to reproduce

  1. Follow the documentation at https://docs.plane.so/self-hosting/methods/docker-compose
  2. Go through the initial setup.
  3. Go to your profile setting.
  4. Try upload a profile picture.
  5. See the error "Something went wrong please try again later."
  6. Check the API docker logs and see the Access to the bucket 'uploads' is forbidden. Check permissions..

Environment

Production

Browser

Mozilla Firefox

Variant

Self-hosted (community edition)

Version

master (commit 707570c)

OS

Ubuntu 22.04.3 (server) LTS

pablohashescobar commented 2 months ago

@Alt791350, are you using a minio server externally or the one that comes with the plane itself ?

Alt791350 commented 2 months ago

@pablohashescobar The one that comes with Plane itself.

akshat5302 commented 2 months ago

Hey @Alt791350,

Could you confirm if you're setting up using recommended edition or community-edition

Also, did you modify the plane.env for minio/aws specific variables? Please share your plane.env with us. Feel free to replace secrets with ***

Alt791350 commented 2 months ago

Hey @Alt791350,

Could you confirm if you're setting up using recommended edition or community-edition

Also, did you modify the plane.env for minio/aws specific variables? Please share your plane.env with us. Feel free to replace secrets with ***

Thanks for the reply. I'm using the community-edition. I will try the recommended edition as well.

This is the plane.env. I kept everything as default as possible to see if it was a user error or not. (the exposed passwords are default and I didn't change them, I wanted to make sure it worked before I changed variables)

I didn't change anything in the docker-compose.yml as well.

APP_RELEASE=stable

WEB_REPLICAS=1
SPACE_REPLICAS=1
ADMIN_REPLICAS=1
API_REPLICAS=1

NGINX_PORT=1245
WEB_URL=http://192.168.1.10:1245
DEBUG=0
SENTRY_DSN=
SENTRY_ENVIRONMENT=production
CORS_ALLOWED_ORIGINS=http://192.168.1.10:1245

#DB SETTINGS
PGHOST=plane-db
PGDATABASE=plane
POSTGRES_USER=plane
POSTGRES_PASSWORD=plane
POSTGRES_DB=plane
POSTGRES_PORT=5432
PGDATA=/var/lib/postgresql/data
DATABASE_URL=

# REDIS SETTINGS
REDIS_HOST=plane-redis
REDIS_PORT=6379
REDIS_URL=

# Secret Key
SECRET_KEY=****

# DATA STORE SETTINGS
USE_MINIO=1
AWS_REGION=
AWS_ACCESS_KEY_ID=access-key
AWS_SECRET_ACCESS_KEY=secret-key
AWS_S3_ENDPOINT_URL=http://plane-minio:9000
AWS_S3_BUCKET_NAME=uploads
MINIO_ROOT_USER=access-key
MINIO_ROOT_PASSWORD=secret-key
BUCKET_NAME=uploads
FILE_SIZE_LIMIT=5242880

# Gunicorn Workers
GUNICORN_WORKERS=1

# UNCOMMENT `DOCKER_PLATFORM` IF YOU ARE ON `ARM64` AND DOCKER IMAGE IS NOT AVAILABLE FOR RESPECTIVE `APP_RELEASE`
# DOCKER_PLATFORM=linux/amd64
Alt791350 commented 2 months ago

@akshat5302 I just tested it with the recommended edition and that seems to work fine. I'm not getting the error in the docker logs of the plane-api container.

Checking bucket...
Bucket 'uploads' does not exist. Creating bucket...
Bucket 'uploads' created successfully.
Public read access policy set for bucket 'uploads'.
Alt791350 commented 2 months ago

I also just tried the preview branch but I got the same error as on the master branch.

Checking bucket...
Access to the bucket 'uploads' is forbidden. Check permissions.
Alt791350 commented 2 months ago

So I just tried installing Plane community edition on my Windows development system to see if that works and that worked immediatly out of the box.

The server that has the issue is a Ubuntu 22.04.3 server. Is there anything special I have to do on this OS to make it work?

sypion commented 1 month ago

Hi there! I just started experiencing this issue after recently updating. How can I switch to the "recommended edition" to see if this resolves it?

Edit: Resolved the issue by bringing back the AWS variables into my .env and docker-compose.

moiz-qureshi commented 1 month ago

Hi there! I just started experiencing this issue after recently updating. How can I switch to the "recommended edition" to see if this resolves it?

Edit: Resolved the issue by bringing back the AWS variables into my .env and docker-compose.

Can you clarify what you mean bu bringing back AWS variables? I am experiencing the exact same thing.

sypion commented 1 month ago

Hi there! I just started experiencing this issue after recently updating. How can I switch to the "recommended edition" to see if this resolves it? Edit: Resolved the issue by bringing back the AWS variables into my .env and docker-compose.

Can you clarify what you mean bu bringing back AWS variables? I am experiencing the exact same thing.

Ensure these variables are in your plane.env file:

AWS_REGION=
AWS_ACCESS_KEY_ID=access-key
AWS_SECRET_ACCESS_KEY=secret-key
AWS_S3_ENDPOINT_URL=http://plane-minio:9000
AWS_S3_BUCKET_NAME=uploads

And these environment variables are in your docker-compose.yaml:

    - AWS_REGION=${AWS_REGION:-""}
    - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-"access-key"}
    - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-"secret-key"}
    - AWS_S3_ENDPOINT_URL=${AWS_S3_ENDPOINT_URL:-http://plane-minio:9000}
    - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads}
    - MINIO_ROOT_USER=${MINIO_ROOT_USER:-"access-key"}
    - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-"secret-key"}
    - BUCKET_NAME=${BUCKET_NAME:-uploads}
lhenri commented 4 hours ago

I can confirm that I've also had this bug, but only on the latest release. Even with the solution suggested by @sypion , I couldn't get minio to work. However, when I went back to version v0.23.1, everything worked again (with the default settings suggested by @sypion , I didn't test modifying them).

I can't give any more details at the moment for lack of time, but having looked at my console when uploading an image, I remember that the path of the POST request wasn't right. It must have been something like

I'm using the self-hosted community version with docker compose stack.