supabase / supabase

The open source Firebase alternative. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.
https://supabase.com
Apache License 2.0
72.28k stars 6.94k forks source link

Self-hosted storage error 500 "The file system does not support extended attributes or has the feature disabled." #20096

Closed ethicnology closed 2 weeks ago

ethicnology commented 9 months ago

Bug report

Describe the bug

Trying to upload a file in a bucket result with errors

May be related to:

The solutions provided are related to macos VirtioFS which is not my case…

To Reproduce

Steps to reproduce the behavior, please provide code snippets or a repository:

  1. Deploy self-hosted supabase following the official documentation
  2. Create a bucket
  3. Upload a file
  4. Error 500
    {"statusCode":"500","error":"Error","message":"The file system does not support extended attributes or has the feature disabled."}

Expected behavior

File uploaded in supabase storage

Screenshots

Screenshot 2024-01-01 at 6 48 41 PM

System information

Additional context

Logs

supabase-storage | {"level":30,"time":"2023-12-18T15:12:17.946Z","pid":1,"hostname":"499a4c8948ab","jodId":"","type":"event","event":"ObjectAdminDelete","payload":"{\"name\":\"Untitled.jpg\",\"bucketId\":\"test\",\"tenant\":{\"ref\":\"stub\",\"host\":\"localhost\"},\"version\":\"e7f8e9ac-ad0e-4313-9495-427374438526\",\"reqId\":\"req-y\",\"$version\":\"v1\"}","objectPath":"stub/test/Untitled.jpg","tenantId":"stub","project":"stub","reqId":"req-y","msg":"[Admin]: ObjectAdminDelete stub/test/Untitled.jpg"} supabase-kong | 10.19.117.1 - - [18/Dec/2023:15:12:18 +0000] "POST /storage/v1/object/test/Untitled.jpg HTTP/1.1" 500 130 "http://localhost:8000/project/default/storage/buckets/test" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:120.0) Gecko/20100101 Firefox/120.0" supabase-storage | {"level":30,"time":"2023-12-18T15:12:18.018Z","pid":1,"hostname":"499a4c8948ab","reqId":"req-y","tenantId":"stub","project":"stub","reqId":"req-y","type":"request","req":{"traceId":"req-y","method":"POST","url":"/object/test/Untitled.jpg","headers":{"host":"storage:5000","x_forwarded_proto":"http","x_forwarded_host":"localhost","x_forwarded_port":"8000","x_real_ip":"10.19.117.1","content_length":"5825","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:120.0) Gecko/20100101 Firefox/120.0","accept":"*/*","referer":"http://localhost:8000/project/default/storage/buckets/test","x_client_info":"supabase-js-web/2.38.3","x_upsert":"false","content_type":"multipart/form-data; boundary=---------------------------84013450922543696563518664756"},"hostname":"storage:5000","remoteAddress":"172.20.0.7","remotePort":50720},"res":{"statusCode":500,"headers":{"content_type":"application/json; charset=utf-8","content_length":"130"}},"responseTime":340.11541399359703,"error":{"raw":"{\"name\":\"Error\",\"httpStatusCode\":500,\"userStatusCode\":500,\"originalError\":{\"code\":\"ENOTSUP\",\"errno\":95}}","name":"Error","message":"The file system does not support extended attributes or has the feature disabled.","stack":"Error: The file system does not support extended attributes or has the feature disabled.\n at StorageBackendError.fromError (/app/dist/storage/errors.js:46:16)\n at FileBackend.uploadObject (/app/dist/storage/backend/file.js:74:48)\n at async Uploader.upload (/app/dist/storage/uploader.js:55:36)\n at async ObjectStorage.uploadNewObject (/app/dist/storage/object.js:29:35)\n at async Object. (/app/dist/http/routes/object/createObject.js:42:46)"},"msg":"stub | POST | 500 | 172.20.0.7 | req-y | /object/test/Untitled.jpg | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:120.0) Gecko/20100101 Firefox/120.0"}

the-rich-piana commented 9 months ago

Also getting this issue. At first I thought it was docker related but now I'm not sure. I'm on Ubuntu 22.04. And I'm trying to upload files pulled from an S3 bucket into my local supabase storage volume.

ethicnology commented 7 months ago

Any update ?

Serlodh commented 6 months ago

Any update ?

For some reason when you start supabase with the s3 compose: docker compose -f docker-compose.yml -f docker-compose.s3.yml up it magically works. I now have no errors when uploading any files.

Had the same error before

ethicnology commented 6 months ago

@Serlodh Thank you a lot for this: docker compose -f docker-compose.yml -f docker-compose.s3.yml up I saw they added a new compose file, but I didn't see any documentation about it

I will give it a try later

the-rich-piana commented 6 months ago

@Serlodh solutions seems to have worked. Not sure why mods didn't post a solution. They just closed the other tickets.

ethicnology commented 6 months ago

@Serlodh @the-rich-piana

Did you configure anything to make it works ?

dependency failed to start: container supabase-minio-1 is unhealthy

minio-1                         | MinIO Object Storage Server
minio-1                         | Copyright: 2015-2024 MinIO, Inc.
minio-1                         | License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
minio-1                         | Version: RELEASE.2024-03-21T23-13-43Z (go1.21.8 linux/amd64)
minio-1                         | 
minio-1                         | API: http://172.25.0.4:9000  http://127.0.0.1:9000 
minio-1                         | WebUI: http://172.25.0.4:9001 http://127.0.0.1:9001 
minio-1                         | 
minio-1                         | Docs: https://min.io/docs/minio/linux/index.html
minio-1                         | Status:         1 Online, 0 Offline. 
minio-1                         | STARTUP WARNINGS:
minio-1                         | - The standard parity is set to 0. This can lead to data loss.
supabase-imgproxy               | INFO    [2024-03-26T02:00:48Z] Started /health  request_id=OLHxMX10tLF22brmNpwzW method=GET client_ip=127.0.0.1
supabase-imgproxy               | INFO    [2024-03-26T02:00:48Z] Completed in 315.705µs /health  request_id=OLHxMX10tLF22brmNpwzW method=GET status=200 client_ip=127.0.0.1
supabase-vector                 | 2024-03-26T02:00:50.887409Z  INFO source{component_kind="source" component_id=docker_host component_type=docker_logs component_name=docker_host}: vector::internal_events::docker_logs: Started watching for container logs. container_id=e5247048fde9500949fd8af85daa7c1b09587ac223c4ab33c029cf2adc01b5d1
supabase-db                     | 
supabase-db                     | PostgreSQL Database directory appears to contain a database; Skipping initialization
supabase-db                     | 
supabase-vector                 | 2024-03-26T02:00:51.069929Z ERROR transform{component_kind="transform" component_id=db_logs component_type=remap component_name=db_logs}: vector::internal_events::remap: Mapping failed with event. error="function call error for \"upcase\" at (476:516): expected string, got null" error_type="conversion_failed" stage="processing" internal_log_rate_limit=true
supabase-vector                 | 2024-03-26T02:00:51.069972Z ERROR transform{component_kind="transform" component_id=db_logs component_type=remap component_name=db_logs}: vector::internal_events::remap: Internal log [Mapping failed with event.] is being rate limited.
supabase-vector                 | 2024-03-26T02:00:52.075907Z  WARN sink{component_kind="sink" component_id=logflare_db component_type=http component_name=logflare_db}:request{request_id=0}:http: vector::internal_events::http_client: HTTP error. error=error trying to connect: dns error: failed to lookup address information: Name does not resolve error_type="request_failed" stage="processing" internal_log_rate_limit=true
supabase-vector                 | 2024-03-26T02:00:52.076017Z  WARN sink{component_kind="sink" component_id=logflare_db component_type=http component_name=logflare_db}:request{request_id=0}: vector::sinks::util::retries: Retrying after error. error=Failed to make HTTP(S) request: error trying to connect: dns error: failed to lookup address information: Name does not resolve internal_log_rate_limit=true
supabase-vector                 | 2024-03-26T02:00:53.079340Z  WARN sink{component_kind="sink" component_id=logflare_db component_type=http component_name=logflare_db}:request{request_id=0}:http: vector::internal_events::http_client: Internal log [HTTP error.] is being rate limited.
supabase-vector                 | 2024-03-26T02:00:53.079487Z  WARN sink{component_kind="sink" component_id=logflare_db component_type=http component_name=logflare_db}:request{request_id=0}: vector::sinks::util::retries: Internal log [Retrying after error.] is being rate limited.
supabase-imgproxy               | INFO    [2024-03-26T02:00:53Z] Started /health  request_id=tLFpnMjRfrsYv1-0kcMd5 method=GET client_ip=127.0.0.1
supabase-imgproxy               | INFO    [2024-03-26T02:00:53Z] Completed in 229.392µs /health  request_id=tLFpnMjRfrsYv1-0kcMd5 method=GET status=200 client_ip=127.0.0.1
supabase-analytics              | LOGFLARE_NODE_HOST is: 127.0.0.1
dependency failed to start: container supabase-minio-1 is unhealthy
Hallidayo commented 4 months ago

Hi @ethicnology - Just checking in here, did you get this working for you?

ethicnology commented 4 months ago

@Hallidayo I tried with a fresh environment and executed the command I mentionned earlier in this discussion and I obtained the same error also mentionned earlier.

dependency failed to start: container supabase-minio-1 is unhealthy

Hallidayo commented 3 months ago

@ethicnology - Sorry for the delay on this one, if you run the following do you see anything erroring in the logs:

docker logs supabase-minio-1

ethicnology commented 3 months ago

@Hallidayo docker logs supabase-minio-1

 You are running an older version of MinIO released 3 months before the latest release 
 Update: Run `mc admin update ALIAS` 

MinIO Object Storage Server
Copyright: 2015-2024 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2024-03-21T23-13-43Z (go1.21.8 linux/amd64)

API: http://172.19.0.3:9000  http://127.0.0.1:9000 
WebUI: http://172.19.0.3:9001 http://127.0.0.1:9001 

Docs: https://min.io/docs/minio/linux/index.html
Status:         1 Online, 0 Offline. 
STARTUP WARNINGS:
- The standard parity is set to 0. This can lead to data loss.
Hallidayo commented 3 months ago

@ethicnology - thats strange, could you try running a fresh install if possible? This will also remove all data if you have any and start from scratch

Stop docker and remove volumes: ‘docker compose down -v’

Remove Postgres data: ‘rm -rf volumes/db/data’

ethicnology commented 3 months ago

@Hallidayo

I executed your commands, then I deleted the whole supabase folder and clone again from scratch.

docker compose -f docker-compose.yml -f docker-compose.s3.yml up -d

[+] Running 51/4
 ✔ functions 5 layers [⣿⣿⣿⣿⣿]      0B/0B      Pulled                                  31.9s 
 ✔ db 24 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                    108.2s 
 ✔ realtime 8 layers [⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                31.9s 
 ✔ studio 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                              100.5s 
[+] Running 4/16
 ⠏ Network supabase_default                  Created                                  50.9s 
 ⠹ Volume "supabase_db-config"               Created                                  50.2s 
-> ✘ Container supabase-minio-1                Error                                    26.0s     
 ✔ Container supabase-imgproxy               Started                                  14.5s 
 ✔ Container supabase-vector                 Healthy                                  21.0s 
 ✔ Container supabase-db                     Healthy                                  42.8s 
 ⠇ Container supabase-minio-createbucket-1   Created                                  45.8s 
 ⠏ Container supabase-analytics              Started                                  43.9s 
 ⠧ Container realtime-dev.supabase-realtime  Created                                  42.7s 
 ⠧ Container supabase-meta                   Created                                  42.7s 
 ⠧ Container supabase-rest                   Created                                  42.7s 
 ⠧ Container supabase-kong                   Created                                  42.7s 
 ⠧ Container supabase-edge-functions         Cr...                                    42.7s 
 ⠧ Container supabase-auth                   Created                                  42.7s 
 ⠧ Container supabase-studio                 Created                                  42.7s 
 ⠙ Container supabase-storage                Created                                  40.0s 
-> dependency failed to start: container supabase-minio-1 is unhealthy
docker logs supabase-minio-1

Formatting 1st pool, 1 set(s), 1 drives per set.
-> WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.

 You are running an older version of MinIO released 3 months before the latest release 
 Update: Run `mc admin update ALIAS` 

MinIO Object Storage Server
Copyright: 2015-2024 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2024-03-21T23-13-43Z (go1.21.8 linux/amd64)

API: http://172.22.0.3:9000  http://127.0.0.1:9000 
WebUI: http://172.22.0.3:9001 http://127.0.0.1:9001 

Docs: https://min.io/docs/minio/linux/index.html
Status:         1 Online, 0 Offline. 
STARTUP WARNINGS:
- The standard parity is set to 0. This can lead to data loss.
the-rich-piana commented 2 months ago

@ethicnology not sure if related: supabase-db-minio-createbucket-1: Added `supa-minio` successfully. mc: <ERROR> Unable to make bucket `supa-minio/stub`. Your previous request to create the named bucket succeeded and you already own it.

Otherwise, using minio worked for me, even with that "unhealthy" log.

ethicnology commented 2 months ago

@the-rich-piana

I changed host, it was failing because of context, the whole supabase instance was running into a multipass managed VM, in a new host directly on the bare dedicated server it seems to work (supabase-minio-1 is now healthy).

I didn't try to upload a document yet, but I suppose it's solved.

Shouldn't we add the command to the documentation ?

docker compose -f docker-compose.yml -f docker-compose.s3.yml up -d