chsasank / outline-wiki-docker-compose

Installation and docker compose to self host outline wiki: https://www.getoutline.com/
297 stars 76 forks source link

Profile picture is not shown #10

Closed tw0b33rs closed 4 years ago

tw0b33rs commented 4 years ago

Hi, I've successfully set up outline and everything seems to be working. The only problem I have is, that profile pictures and the website logo can't be shown. It gives me an access denied error. I can update the images though and they are also uploaded. It seems like I can't access the images in the public folder. Do you know how to fix that issue? Thanks.

chsasank commented 4 years ago

What public folder are you referring to?

tw0b33rs commented 4 years ago

I'm referring to the data/minio_root/public folder. The pictures/logo have been successfully uploaded, but the images aren't shown in outline. When I'm back home I can give you a more detailed information.

MDXDave commented 4 years ago

My images are stored in a directory structure like this: data/minio_root/outline-bucket/uploads/5406e0e6-6eb8-4d6c-8612-83e4d5eeac66/30f6567c-6aaa-43f5-aa5f-73e2bde25838 🤔

tw0b33rs commented 4 years ago

My images are stored in a directory structure like this: data/minio_root/outline-bucket/uploads/5406e0e6-6eb8-4d6c-8612-83e4d5eeac66/30f6567c-6aaa-43f5-aa5f-73e2bde25838 🤔

Same here, but this is only true for outline documents. The profile pictures and website logo seem to be stored in the public folder. At least in my case.

This is the error message I'm getting:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied.</Message>
<Key>
public/*some-weird-key*/*some-weird-key*/134.jpg
</Key>
<BucketName>outline-bucket</BucketName>
<Resource>
/outline-bucket/public/*some-weird-key*/*some-weird-key*/134.jpg
</Resource>
chsasank commented 4 years ago

So I've setup encyption on minio: https://github.com/chsasank/outline-wiki-docker-compose/blob/master/generate_conf.sh#L111. This is so that even on deployments on internet, your images stay secure. The error seems to be pointing to this. All the attachment requests should be sending the keys. This works fine for all images etc. Wonder why this stuff is not working for you.

tw0b33rs commented 4 years ago

Hmm yes it works fine for all data which is uploaded to the /outline-bucket/uploads folder. When I change the image of the website, though, the data is uploaded to the /outline-bucket/public folder. It seems like the public folder doesn't have public read permissions. Do you know how to change that?

chsasank commented 4 years ago

Minio is used for serving static files. Please see config of minio: https://docs.min.io/docs/minio-server-configuration-guide.html. Alternatively you can access the admin interface of minio by opening ports in docker compose: https://github.com/chsasank/outline-wiki-docker-compose/blob/master/docker-compose.yml

tw0b33rs commented 4 years ago

Thanks, this was a useful hint. I opened the port with ` ports:

Everything is working now and the website and user logos are shown correctly.

EJShim commented 3 years ago

@tenneck Can you tell me some more details how you resolved this? I set

    ports:
      - 80:80
      - 443:443
      - 9000:9000
  minio:
    image: minio/minio
    volumes:
      - ./data/minio_root:/minio_root:z
      - ./data/certs:/root/.minio/certs:z
    command: "minio server /minio_root && mc policy set public minio/outline-bucket/public"

And no luck. Adding mc policy command removes every image I uploaded on documents

Hommus commented 3 years ago

I'm having a similar issue where the profile pictures are displayed but the organisation/team image is not. I have followed the above recommendations but I'm still left with an unloaded image and the following error message:

GET http://redacted:7000/outline-bucket/public/249 logo1.png... 403 (Forbidden)

I have double checked and the minio_root/outline-bucket/public has a public policy. I'm not sure whether I need the policy to be applied to 'minio' instead of 'minio_root' but there was no 'minio' folder created.

Any help is appreciated.

aldidoanta commented 3 years ago

@EJShim I ended up using minio web UI to set the policy.

  1. Open port for minio in docker-compose.yml

    minio:
    image: minio/minio
    ports:
      - 9000:9000
    volumes:
      - ./data/minio_root:/minio_root:z
      - ./data/certs:/root/.minio/certs:z
    command: "minio server /minio_root"
    env_file: ./env.minio
    restart: always
  2. Then enable access to web UI in env.minio

    MINIO_BROWSER=on
  3. Restart docker, and go to http://host:9000/. Log in using MINIO_ACCESS_KEY and MINIO_SECRET_KEY.

  4. You should be able to see your bucket and edit its policy Screenshot_20210526_181242

Minipada commented 3 years ago

@aldidoanta this did the trick. Thanks!

Hommus commented 3 years ago

@aldidoanta This also worked for me. Cheers!

anirudhmurali commented 3 years ago

@chsasank Could you please add this to the help.md and README.