makeplane / makeplane/plane

Worklogs export download links use http:// even with MINIO_ENDPOINT_SSL=1 set

Open
#9,550 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
59.6k
Forks
5.8k
Avg merge
1d 22h
Merged PRs (30d)
49

Description

Related to #5827, same root issue but specific to the Worklogs/Timesheets export feature.

We're self-hosting Plane Commercial (Docker Compose via prime-cli), behind Cloudflare Tunnel so TLS ends at Cloudflare and the internal proxy traffic is plain HTTP. Tested this on both v2.5.3 and v3.0.1, same result on both.

Every download link from Worklogs export (Project Settings > Worklogs > Download, plus the Previous Downloads list) comes back as an http:// presigned URL, like:

http:///uploads/.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&...

Since the site itself is https, Chrome silently blocks these as insecure downloads. No error, no toast, the click just does nothing. Confirmed the file itself is fine, curl -L on the same url works and pulls the CSV down no problem, so it's really just the scheme on the link that's wrong.

We set MINIO_ENDPOINT_SSL=1 and AWS_S3_ENDPOINT_URL=https://, which per storage.py is supposed to force https on generated presigned urls when behind a proxy like ours. Verified both vars are actually set inside the api and worker containers, and the app confirms it can reach the bucket fine through the new url on startup (Checking bucket... Bucket 'uploads' exists.).

Everything else that goes through S3Storage seems to respect this fine based on the code, but Worklogs export specifically doesn't. Freshly generated exports (checked via server request logs, not cached) still come back http:// even with the fix applied and containers freshly restarted. Seems like Worklogs/Timesheets export must be running separate code from the normal S3Storage.generate_presigned_url path, maybe since it's an enterprise only feature.

Anyone know if Worklogs export url generation is a separate code path, and if so can it get the same SSL override support?

Happy to share more logs if useful.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with storage.py and trace the Worklogs/Timesheets export and Previous Downloads URL-generation path, comparing it with the normal S3Storage.generate_presigned_url path. Reproduce through Project Settings > Worklogs > Download with MINIO_ENDPOINT_SSL=1 and AWS_S3_ENDPOINT_URL set, then verify generated links use https:// and downloads work through the HTTPS site.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.