0

I am trying to use tus-js-client with TUSD Docker image to upload a file to Cloudflare R2.

I've used the same docker-compose.yml to upload to AWS S3 bucket successfully, like shown.

TUSD provides a way to upload a file using a S3 compatible endpoint with -s3-endpoint parameter and Cloudflare R2 provides such endpoint and the credentials needed (Access Key ID and Secret Access Key).

When the file is sended by the frontend app the first request worked fine, creating the metadata .info file into the R2 bucket.

The problem begins with the subsequent requests to upload the file chuncks.

Looking the request at the console there is no response with a status code. The error below is presented by the tus-js-client. The next retry is a HEAD request and returns a 404 status code.

I've tried at first with a start a nginx reverse proxy with -behind-proxy=true and after the error I tried with -behind-proxy=false. Nothing changed.

I removed the nginx and tried again only with tusd server. Nothing changed too.

tus-js-client error

Error: tus: failed to upload chunk at offset 0, caused by [object ProgressEvent], originated from request (method: PATCH, url: http://12.23.45.67/files/3087adfc92d0d045b5b28c73ee32289a+ALtBKUtgElTHNGK2gGlbb4K9ne0uZmmAQdXz7mFZrvAAZkACIDmLY+0L+DvFlSwksYLGtil11ve/LH5UqOKoxvywNSKzLZHX8IwEkplpOk935LDJQTVBANm5PILybEhgcCwPrH3039iCaoa7QOKM4XfOFroZ0p7RO7FPaKrgys97n+h5vXBD87KiFcl2RDUnUdS2UkA1I1YXrCeSd87Yi3nzK2wBWjBPm3PX94ltujtvtVXOPU3pIO7sEaPZQBDGxxLdBStxVFnMNYMfxuiBKiF/9RkEw7kcWdGGApfmG5FvYNfBfM3sF/Wl/BYHw0HwfA==, response code: n/a, response text: n/a, request id: n/a) 

TUSD log

tus_1  | [tusd] 2022/10/29 01:56:01.822078 Using 0.00MB as maximum size.
tus_1  | [tusd] 2022/10/29 01:56:01.822475 Using 0.0.0.0:1080 as address to listen.
tus_1  | [tusd] 2022/10/29 01:56:01.822804 Using /files/ as the base path.
tus_1  | [tusd] 2022/10/29 01:56:01.823180 Using /metrics as the metrics path.
tus_1  | [tusd] 2022/10/29 01:56:01.823545 Supported tus extensions: creation,creation-with-upload,termination,concatenation,creation-defer-length
tus_1  | [tusd] 2022/10/29 01:56:01.824120 You can now upload files to: http://0.0.0.0:1080/files/
tus_1  | [tusd] 2022/10/29 01:56:15 event="RequestIncoming" method="POST" path="" requestId=""
tus_1  | [tusd] 2022/10/29 01:56:16 event="UploadCreated" id="54a4a47b064f1d1033c6a2ab31b5f08d+AO8ImmEviOzNx4pKspyfdIAO/LhLOo89yfvbMmgpyyrewhAmEGeO0sNici3idH/wBqomvVuItdUUWecHMKAdf4U0P+rqDSajq6LRE8pxmbS/aB++tChiN93FEtpMIZUXIyQOFq9L/cspKb1ocUzzXBFdR1n+EAjLwi8mJ3Sqw6Dj9CRxff9jQ7WkRgHOGUeYebLXTzNZnNvv86IWDCekPCPj1BoztjPM2nS7+1HYABHShcOfioQ6C42rYUkfLWV4eU4yRClMMemvql+FjgdtTOrQrjASEj8SRbjr3Rvhs3iix3h7peqs5p2gUvGvhrbw/g==" size="1053651" url="http://52.87.247.28/files/54a4a47b064f1d1033c6a2ab31b5f08d+AO8ImmEviOzNx4pKspyfdIAO/LhLOo89yfvbMmgpyyrewhAmEGeO0sNici3idH/wBqomvVuItdUUWecHMKAdf4U0P+rqDSajq6LRE8pxmbS/aB++tChiN93FEtpMIZUXIyQOFq9L/cspKb1ocUzzXBFdR1n+EAjLwi8mJ3Sqw6Dj9CRxff9jQ7WkRgHOGUeYebLXTzNZnNvv86IWDCekPCPj1BoztjPM2nS7+1HYABHShcOfioQ6C42rYUkfLWV4eU4yRClMMemvql+FjgdtTOrQrjASEj8SRbjr3Rvhs3iix3h7peqs5p2gUvGvhrbw/g=="
tus_1  | [tusd] 2022/10/29 01:56:16 event="ResponseOutgoing" status="201" method="POST" path="" requestId=""
tus_1  | [tusd] 2022/10/29 01:56:16 event="RequestIncoming" method="OPTIONS" path="54a4a47b064f1d1033c6a2ab31b5f08d+AO8ImmEviOzNx4pKspyfdIAO/LhLOo89yfvbMmgpyyrewhAmEGeO0sNici3idH/wBqomvVuItdUUWecHMKAdf4U0P+rqDSajq6LRE8pxmbS/aB++tChiN93FEtpMIZUXIyQOFq9L/cspKb1ocUzzXBFdR1n+EAjLwi8mJ3Sqw6Dj9CRxff9jQ7WkRgHOGUeYebLXTzNZnNvv86IWDCekPCPj1BoztjPM2nS7+1HYABHShcOfioQ6C42rYUkfLWV4eU4yRClMMemvql+FjgdtTOrQrjASEj8SRbjr3Rvhs3iix3h7peqs5p2gUvGvhrbw/g==" requestId=""
tus_1  | [tusd] 2022/10/29 01:56:16 event="ResponseOutgoing" status="200" method="OPTIONS" path="54a4a47b064f1d1033c6a2ab31b5f08d+AO8ImmEviOzNx4pKspyfdIAO/LhLOo89yfvbMmgpyyrewhAmEGeO0sNici3idH/wBqomvVuItdUUWecHMKAdf4U0P+rqDSajq6LRE8pxmbS/aB++tChiN93FEtpMIZUXIyQOFq9L/cspKb1ocUzzXBFdR1n+EAjLwi8mJ3Sqw6Dj9CRxff9jQ7WkRgHOGUeYebLXTzNZnNvv86IWDCekPCPj1BoztjPM2nS7+1HYABHShcOfioQ6C42rYUkfLWV4eU4yRClMMemvql+FjgdtTOrQrjASEj8SRbjr3Rvhs3iix3h7peqs5p2gUvGvhrbw/g==" requestId=""
tus_1  | [tusd] 2022/10/29 01:56:16 event="RequestIncoming" method="PATCH" path="54a4a47b064f1d1033c6a2ab31b5f08d+AO8ImmEviOzNx4pKspyfdIAO/LhLOo89yfvbMmgpyyrewhAmEGeO0sNici3idH/wBqomvVuItdUUWecHMKAdf4U0P+rqDSajq6LRE8pxmbS/aB++tChiN93FEtpMIZUXIyQOFq9L/cspKb1ocUzzXBFdR1n+EAjLwi8mJ3Sqw6Dj9CRxff9jQ7WkRgHOGUeYebLXTzNZnNvv86IWDCekPCPj1BoztjPM2nS7+1HYABHShcOfioQ6C42rYUkfLWV4eU4yRClMMemvql+FjgdtTOrQrjASEj8SRbjr3Rvhs3iix3h7peqs5p2gUvGvhrbw/g==" requestId=""
tus_1  | [tusd] 2022/10/29 01:56:17 event="RequestIncoming" method="PATCH" path="54a4a47b064f1d1033c6a2ab31b5f08d+AO8ImmEviOzNx4pKspyfdIAO/LhLOo89yfvbMmgpyyrewhAmEGeO0sNici3idH/wBqomvVuItdUUWecHMKAdf4U0P+rqDSajq6LRE8pxmbS/aB++tChiN93FEtpMIZUXIyQOFq9L/cspKb1ocUzzXBFdR1n+EAjLwi8mJ3Sqw6Dj9CRxff9jQ7WkRgHOGUeYebLXTzNZnNvv86IWDCekPCPj1BoztjPM2nS7+1HYABHShcOfioQ6C42rYUkfLWV4eU4yRClMMemvql+FjgdtTOrQrjASEj8SRbjr3Rvhs3iix3h7peqs5p2gUvGvhrbw/g==" requestId=""
tus_1  | [tusd] 2022/10/29 01:56:17 event="RequestIncoming" method="HEAD" path="54a4a47b064f1d1033c6a2ab31b5f08d+AO8ImmEviOzNx4pKspyfdIAO/LhLOo89yfvbMmgpyyrewhAmEGeO0sNici3idH/wBqomvVuItdUUWecHMKAdf4U0P+rqDSajq6LRE8pxmbS/aB++tChiN93FEtpMIZUXIyQOFq9L/cspKb1ocUzzXBFdR1n+EAjLwi8mJ3Sqw6Dj9CRxff9jQ7WkRgHOGUeYebLXTzNZnNvv86IWDCekPCPj1BoztjPM2nS7+1HYABHShcOfioQ6C42rYUkfLWV4eU4yRClMMemvql+FjgdtTOrQrjASEj8SRbjr3Rvhs3iix3h7peqs5p2gUvGvhrbw/g==" requestId=""

docker-compose.yml

version: '2'

services:
    tus:
        image: tusproject/tusd
        command: -s3-bucket=my-bucket -behind-proxy=false -s3-endpoint=https://abcdef.r2.cloudflarestorage.com
        environment:
            - AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXXX
            - AWS_SECRET_ACCESS_KEY=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
            - AWS_REGION=us-east-1
        ports:
            - "80:1080"
        restart: always
        networks:
            - code-network
networks:
    code-network:
        driver: bridge

0 Answers0