immich icon indicating copy to clipboard operation
immich copied to clipboard

[BUG] Uploading Videos from ios Safari to Web does not work.

Open akoyaxd opened this issue 1 year ago • 2 comments

The bug

User Story: I want to upload videos from my iPhone to immich through the Web Page (E.g. becuase I do only have some shared link of immich).

iPhones / Safari seems to transcode / alter the videos before upload (no idea if we can have influence to this from the web application). After the transcode the upload to immich does not seem to start though.

Current behavior: Upload of Videos does not start after the iPhone "prepration" of the video.

Expected behavior: We skip the transcoding / preperation on the iPhone (if possible). else: The Upload starts properly after the preperation.

The OS that Immich Server is running on

Docker on Debian Host

Version of Immich Server

v1.56.2

Version of Immich Mobile App

n. a.

Platform with the issue

  • [X] Server
  • [X] Web
  • [ ] Mobile

Your docker-compose.yml content

n.a.

Your .env content

n.a.

Reproduction steps

1. Share link
2. Try to upload videos from the iPhone
3. see failed upload
...

Additional information

Tested on an iPhone 7 with iOS 16. But I got the feedback from people I shared a link with, that uploads do not work on newer iPhones on ios 17 as well.

I run another http proxy in front of the immich proxy.

server {
    if ($host = photos.dfghfdgh.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name photos.dfghdfgh.org;
    listen 80;
    listen [::]:80;
    return 404; # managed by Certbot
}

server {
    server_name photos.sdfgfd.org;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    client_max_body_size 0;

    access_log /var/log/nginx/photos.access.log; # reduce I/0 with buffer=10m flush=5m
    error_log  /var/log/nginx/photos.error.log;

        add_header Strict-Transport-Security "max-age=15553000; includeSubDomains; preload;";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;

    location / {
        proxy_connect_timeout       36000;
        proxy_send_timeout          36000;
        proxy_read_timeout          36000;
        send_timeout                36000;
        proxy_headers_hash_max_size 512;
        proxy_headers_hash_bucket_size 64;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        add_header Strict-Transport-Security "max-age=15553000; preload;";
        add_header Front-End-Https on;

        proxy_buffer_size   128k;
        proxy_buffers   4 256k;
        proxy_busy_buffers_size   256k;

        proxy_pass http://127.0.0.1:2283;
    }

    ssl_certificate /etc/letsencrypt/live/docker.int.sdfgg.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/docker.int.sdgfd.org/privkey.pem;

}

akoyaxd avatar May 22 '23 09:05 akoyaxd

@zackpollard is this the same issue you ran into this weekend?

bo0tzz avatar May 22 '23 10:05 bo0tzz

Not the exact same issue, but seems related. Not sure if the person uploading their photos also had videos that failed to upload.

zackpollard avatar May 22 '23 10:05 zackpollard

May be related, but on android all my videos stopped uploading. Issue was tracked down to nginx-proxy that is in front of immich (for ssl) buffering large files (so videos) to file, and due to some error on that, all video uploads thus failed.

In nginx logs I could see:

*91 a client request body is buffered to a temporary file...

I disabled nginx buffering:

        proxy_request_buffering off;
	client_max_body_size 0;

in nginx ssl proxy and videos uploaded again.

ProxiBlue avatar Oct 06 '23 11:10 ProxiBlue